当apache运行时,mysql_connect()不起作用;从命令行工作

时间:2010-06-11 05:34:34

标签: php mysql

我有一个奇怪的问题。我正在尝试在我的服务器上编写一个简单的php网页,但mysql_connect()不会连接到本地或其他任何服务器。这是奇怪的地方。如果我使用相同的PHP脚本并从命令行运行它,脚本可以工作。 phpinfo()表示文件(由apache运行)和命令行(以root身份运行)都调用相同版本的php,加载mysql,并且php.ini是相同的。

此外,我在同一台服务器上运行MediaWiki安装,并且它使用本地安装的mysqld并且运行正常,所以我完全不知道为什么代码不能正常工作。我在运行时收到的错误:

  

无法连接到'xxx.xxx.xxx.xxx'(13)

上的MySQL服务器

(对于我正在连接的服务器所有者的隐私,IP是x'd)

2 个答案:

答案 0 :(得分:3)

您尝试连接的操作系统是什么?听起来这可能是一个SELinux问题。

使用SELinux,您通常可以使用

allow apache to make network connections
/usr/sbin/setsebool httpd_can_network_connect 1

OR     / usr / sbin / setsebool httpd_can_network_connect true

没有SELinux的操作系统可能具有类似的保护机制。

答案 1 :(得分:0)

  1. 检查基本网络连接。来自网络服务器的ping xxx.xxx.xxx.xxx。如果这不起作用,请检查两端的网络配置。
  2. 尝试从网络服务器运行mysql:mysql -h xxx.xxx.xxx.xxx -u user -p如果无法连接,请跟踪原因:它可能是两端的SELinux问题(检查安全日志),或者{{}中可能存在别名{1}}?还要在mysql命令行上使用/etc/hosts启用详细消息。
  3. 检查是否允许用户使用mysql的用户管理功能登录。