我已经建立了一个新的 CentOS 服务器,其中装有 Apache 和 php-fpm。
php 应用程序无法连接到外部 MySQL 服务器。其他服务器可以访问此服务器,数据库服务器上的防火墙不是问题所在。
我检查了 apache 和 php-fpm 日志,但找不到任何线索。如果我在 CentOS 服务器上通过 MySQL 连接外部数据库,则没有问题,但 php 应用程序失败。
这让我得出结论,从客户端到数据库服务器的路线没有障碍,但 CentOS 7 或 php-fpm 在某个地方造成了麻烦。
有人知道这可能是什么吗?我不知道还能去哪里找。也许是 CentOS 7 中有一些我不知道的新安全更改?
答案1
这可能是与 SELINUX 相关的问题。请尝试以下操作(按优先顺序):
setsebool httpd_can_network_connect_db on
如果有效,请使用“-P”标志使其永久生效。如果无效,请转到步骤 2:setsebool httpd_can_network_connect on
如上所述,如果有效,请使用“-P”标志。否则,转到步骤 3:setenforce 0
这将使 SELINUX 进入宽容(即非阻塞)模式。如果有效,你应该尝试理解什么导致 selinux 阻止您的连接(tail -f /var/log/audit/audit.log 是一个很好的起点)。
如果你不明白为什么 selinux 会阻止你,你可以通过编辑文件 /etc/selinux/config 将其永久设置为宽容模式
答案2
我提这个问题早了 30 分钟。有一个我不知道的 SELinux 变量:httpd_can_network_connect。设置这个变量解决了这个问题 :)