PHP/Apache: PHP 致命错误: 调用未定义的函数 mysql_connect()

2022-08-30 19:26:01

我有MySQL(5.5.23 Community Server),Apache(2.2)和PHP(5.3.13)在Fedora 15机器(64位)上运行。每个工作本身都没有问题。

我以为PHP被配置/编译为与MySQL一起使用,但是当我尝试加载任何进行MySQL调用的PHP网页时,我得到了上面注明的致命错误(在Apache错误日志中)。PHP本身可以正常工作,通过Apache和命令行。

当我从命令行运行php -i时,果然它显示了所有的MySQL位和片段,但是当我加载一个显示phpinfo()的页面时,没有提到MySQL模块。

我也尝试过在php.ini中取消注释“extension=mysql.so”,但PHP随后抱怨“PHP启动:无法加载动态库(即使模块确实驻留在那里)。[更正:所述错误实际上是由于拼写错误,但从命令行运行表明该模块已经加载 - PHP有一个警告说。'/usr/lib64/php/modules/mysql.so'."

我还禁用了 SELinux;多次停止/重新启动Apache;嗯,MySQL-Devel,以防万一它有任何不同;而且,似乎还有其他所有可能的事情。

如果我从命令行运行一个小的PHP测试脚本,访问MySQL数据库,那么它就可以毫无问题地工作,所以PHP确实知道MySQL,但是当它在Apache下运行时,它似乎不知道MySQL甚至存在。

几个月来,我一直在断断续续地试图解决这个问题,似乎已经尝试了一切,但似乎没有任何效果。

如果我真的有必要,我不介意重新安装PHP,如果有人可以演示使用MySQL支持配置/编译的正确方法,这样我就可以让它在Apache下工作,尽管理想情况下,我只是希望让现有的安装工作。


答案 1

如果其他人遇到这种情况,这是PHP无法访问mysql客户端库的情况。在系统上拥有MySQL服务器不是正确的解决方法。针对 ubuntu(和 PHP 5)的修复:

sudo apt-get install php5-mysql

安装客户端后,应重新启动 Web 服务器。如果您使用的是apache,则以下操作应该有效:

sudo service apache2 restart

答案 2

请记住,从 PHP 5.5.0 开始,该函数已被弃用,并且在 PHP 7 中完全删除mysql_connect()

更多信息可以在php文档中找到:

报价:

警告
此扩展在 PHP 5.5.0 中已弃用,在 PHP 7.0.0 中已被删除。相反,应使用 MySQLi 或 PDO_MySQL 扩展。有关更多信息,另请参阅MySQL:选择API指南和相关常见问题解答。此函数的替代方法包括:
* mysqli_connect()
* PDO::__construct()


推荐