我在Fedora 15计算机(64位)上运行MySQL(5.5.23社区服务器),Apache(2.2)和PHP(5.3.13)。每个工作都没有问题。
我认为PHP已配置/编译为与MySQL一起使用,但是当我尝试加载任何发出MySQL调用的PHP网页时,我得到了上述致命错误(在Apache错误日志中)。 PHP可以通过Apache和命令行自行运行。
当我从命令行运行php -i时,确定它显示了所有MySQL的碎片,但当我加载显示phpinfo()的页面时,则没有提到的MySQL模块。
我也试过取消评论" extension = mysql.so"在php.ini中,然后PHP抱怨" PHP启动:无法加载动态库'/usr/lib64/php/modules/mysql.so'."
(即使模块确实驻留在那里)。但是,我并不完全确定该行是否需要取消注释。 [更正:声明的错误实际上是由于输入错误,但是从命令行运行表明该模块已经加载了 - PHP发出了警告,说明了这一点。]
我也禁用了SELinux;多次停止/重启Apache; yummed MySQL-Devel,以防它有任何区别;似乎还有其他可能的事情。
如果我从命令行运行一个小的PHP测试脚本,访问MySQL数据库,那么它没有问题,所以PHP确实知道MySQL,但是当它在Apache下运行时似乎没有线索MySQL甚至存在。
我几个月来一直试图解决这个问题,似乎已经尝试了一切,但似乎没有任何效果。
我不介意必须重新安装PHP,如果我真的需要,如果有人可以演示使用MySQL支持配置/编译的正确方法,那么我可以让它在Apache下工作,尽管理想情况下我只是希望让现有的安装工作。
非常感谢您的任何帮助!
答案 0 :(得分:63)
如果其他人面临这种情况,那就是PHP无法访问mysql客户端库的情况。在系统上安装MySQL服务器不是正确的解决方法。修复ubuntu(和PHP 5):
sudo apt-get install php5-mysql
安装客户端后,应重新启动Web服务器。如果您使用的是apache,则以下内容应该有效:
sudo service apache2 restart
答案 1 :(得分:17)
请记住,自PHP 5.5.0起,mysql_connect()
函数已弃用,并且已在PHP 7中完全删除
可以在php documentation上找到更多信息:
引用:
警告强>
此扩展在PHP 5.5.0中已弃用,并且已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
* mysqli_connect()
* PDO :: __ construct()
答案 2 :(得分:2)
我有同样的问题,不得不引用php manual告诉我mysql和mysqli扩展需要加载libmysql.dll。我在C:\ windows \ system32(windows 7)下搜索它并找不到,所以我下载了它here并将它放在我的C:\ windows \ system32中。我重新启动Apache,一切正常。花了我3天的时间才弄明白,希望有所帮助。
答案 3 :(得分:0)
Apache模块PHP版本可能出于某种奇怪的原因而没有把php.ini文件当作CLI版本我建议好好看看:
.ini
文件在php -i
和phpinfo()
之间通过网页有所不同* mysql.so
和.ini
文件的权限,但我认为Apache会将这些文件解析为root
用户在这里要非常清楚,不要在文件系统上搜索php.ini
文件,看看PHP说它正在查看
答案 4 :(得分:0)
Bout如何
sudo yum install php-mysql
或
sudo apt-get install php5-mysql
答案 5 :(得分:-3)
我收到了类似的错误消息。想想我无意中输入了" 9o"在php.ini文件的第一行开头。一旦我删除了它,我就不再收到"致命错误"消息。希望这会有所帮助。
答案 6 :(得分:-4)
mysql
deamon应该正在运行。
如果没有试试这个:
#/etc/init.d/mysql start
或者这个:
#service mysqld start
如果你想在启动时添加mysql:
# chkconfig --add mysqld
# chkconfig -- level 235 mysqld on
如果是,并且仍然无效,请尝试:
取消注释/etc/php/php.ini中的以下行
extension=mysqli.so
extension=mysql.so
请查看'/ usr / lib64 / php / modules / msql.so'上面的帖子。它应该是 mysql.so (如果输入错误则忽略它......)