簡體   English   中英

PHP 無法解析沒有 root 用戶的主機以連接 MySQL DB 但 IP 地址有效

[英]PHP cannot resolve host without root user to connect a MySQL DB but IP address works

define('DB_HOST', 'masterdb');
define('DB_PORT', '3306');
define('DB_DBNAME', 'example');
define('DB_DRIVER', 'mysql');
define('DB_USERNAME', 'luna');
define('DB_PASSWORD', 'alfa');

我在 config.php 文件中設置了 MySQL 連接參數,並嘗試使用它連接到 MySQL 服務器。

cat /etc/hosts
55.55.55.55  masterdb
ping masterdb
55.55.55.55

如果我嘗試連接 MySQL 客戶端,我可以毫無問題地連接它。

mysql -h masterdb --port  3306 -uluna -p

當我嘗試從瀏覽器調用頁面時

curl "192.168.1.1/login.php"

array(2) {
  ["message"]=>
  string(43) "SQLSTATE[HY000] [2002] Connection timed out"

但是如果我更改參數以使用 IP 地址,它就可以工作。

define('DB_HOST', '55.55.55.55');

curl "192.168.1.1/login.php"

connection success!!!


MYSQL

show global variables like '%resolve%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| skip_name_resolve | ON    |
+-------------------+-------+

是否有任何 php.ini 設置?

最后,我明白了它不起作用的原因,但我還沒有找到解決方案。

當我使用“root”用戶運行 php 時,它可以連接解析主機並成功,但如果我使用 php-fpm 用戶(nginx,nobody)它會失敗

sudo -u nginx  /usr/bin/php70 /var/www/html/abc.com/test.php
fails
sudo -u root  /usr/bin/php70 /var/www/html/abc.com/test.php
pass

chmod 644 /etc/hosts

是答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM