2010-06-11 51 views
3

我有一个奇怪的问题。我试图在我的服务器上编写一个简单的php网页,但是mysql_connect()不连接到任何服务器,无论是本地的还是其他的。这是奇怪的地方。如果我采用相同的php脚本并从命令行运行它,该脚本就可以工作。 phpinfo()表示文件(由apache运行)和命令行(以root身份运行)都调用相同版本的php,mysql被加载,并且php.ini也是一样的。当由apache运行时,mysql_connect()不起作用;从命令行工作

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

无法连接到MySQL服务器(13)

(IP被x'd出于对隐私 'xxx.xxx.xxx.xxx'我要连接的服务器的所有者)

+0

也许防火墙的问题? – Artefacto 2010-06-11 05:35:56

+0

系统日志中的任何内容? – 2010-06-11 05:40:51

+0

phpinfo()给出了任何线索? – paullb 2010-06-11 05:42:35

回答

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真正

操作系统,而无需SELinux的可能有类似的保护机制。

+0

这个伎俩! (它在Fedora上运行) 非常感谢你:) – Skeeter 2010-06-13 00:28:26

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