繁体   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