Php mysql#u connect()不';apache运行时无法工作;从命令行工作

Php mysql#u connect()不';apache运行时无法工作;从命令行工作,php,mysql,Php,Mysql,我有一个奇怪的问题。我试图在我的服务器上编写一个简单的php网页,但mysql_connect()不连接到任何服务器,无论是本地服务器还是其他服务器。这就是它变得奇怪的地方。如果我使用相同的php脚本并从命令行运行它,则该脚本可以工作。phpinfo()表示文件(由apache运行)和命令行(以root用户身份运行)都在调用相同版本的php,加载了mysql,并且php.ini是相同的 此外,我在同一台服务器上运行MediaWiki安装,它使用本地安装的mysqld,工作正常,因此我完全不知道为

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

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

无法连接到“xxx.xxx.xxx.xxx”上的MySQL服务器(13)

(出于我连接的服务器所有者的隐私考虑,该IP为x'd)

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

  • 您试图从哪个操作系统连接?听起来可能是SELinux的问题

    使用SELinux,您通常可以使用

    或 /usr/sbin/setsebool httpd\u can\u网络\u连接正确


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

    phpinfo()是否提供了任何线索?请尝试使用apache,然后运行脚本。我猜它默认作为当前登录的用户连接。在连接选项中指定用户名,并确保在mysql中配置了该用户。您的问题是apache运行的用户对您的数据库没有适当的权限。这就成功了!(戴着软呢帽)非常感谢:)
    /usr/sbin/setsebool httpd_can_network_connect 1