问题描述
我已经运行了aptitude install php5-mysql
(并重新启动了MySQL /Apache 2),但是仍然出现此错误:
Fatal error: Call to undefined function mysql_connect() in /home/validate.php on line 21
phpinfo()
表示/etc/php5/apache2/conf.d/pdo_mysql.ini文件已被解析。
最佳方案
好吧,这是你的机会!看来PDO已经准备好;用它代替。
尝试检查是否正在加载PHP MySQL扩展模块:
<?php
phpinfo();
?>
如果不存在,请将以下内容添加到php.ini
文件:
extension=php_mysql.dll
次佳方案
我看到您使用Ubuntu对此进行了标记。很可能未安装MySQL驱动程序(可能还有MySQL)。假设您具有SSH或终端访问权限和sudo权限,请登录服务器并运行以下命令:
sudo apt-get install mysql-server mysql-client php5-mysql
如果已经安装了MySQL软件包或php5-mysql软件包,它将对其进行更新。
更新
由于此答案偶尔仍然会引起单击,因此我将对其进行更新,使其包括PHP7。PHP7需要MySQL的其他程序包,因此您将需要对apt-get命令使用其他参数。
sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql
重要的是,自PHP v5.5.0起不推荐使用mysql_connect()
。请参阅此处的官方文档:PHP: mysql_connect()
第三种方案
如果您已经在使用PHP7,则先前已弃用的函数mysql_*
被完全删除,因此您应该使用PDO-functions或mysqli_*
函数来更新代码。
如果不可能,作为解决方法,我创建了一个小的PHP包含文件,该文件使用mysqli_*()
重新创建了旧的mysql_*
函数-functions:fix_mysql.inc.php
第四种方案
如果有人来到这里遇到docker php official images的问题,请在docker容器内键入以下命令。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
有关更多信息,请参阅How to install more PHP extensions
部分上方的链接(但对我来说有点难…)。
否则此文档可能会对您有所帮助。
第五种方案
我也遇到了undefined MySQL_connect()的问题。我试图在PHP.ini文件中进行更改,但它给了我同样的错误。然后,我来到了这个解决方案,将代码从折旧的php函数更改为新函数。
$con=mysqli_connect($host,$user,$password);
mysqli_select_db($con,dbname);
//To select the database
session_start(); //To start the session
$query=mysqli_query($con,your query);
//made query after establishing connection with database.
我希望这能帮到您 。该解决方案对我来说是正确的。
编辑:
如果您从旧版php升级到apt-get install php7.0-mysql
第六种方案
尝试:
<?php
phpinfo();
?>
运行页面并搜索mysql
。如果未找到,请在 shell 程序中运行以下命令,然后重新启动Apache服务器:
sudo apt-get install mysql-server mysql-client php5-mysql
另外,请确保您在apache2.conf(或conf.d /php.ini)文件中的某处未注释以下所有行,从
;extension=php_mysql.so
至
extension=php_mysql.so
第七种方案
在php.ini文件中
改变这个
;extension=php_mysql.dll
进入
extension=php_mysql.dll
第八种方案
我的猜测是您的PHP安装未使用MySQL支持进行编译。
检查您的配置命令(php -i | grep mysql
)。您应该看到类似'--with-mysql=shared,/usr'
的内容。
您可以在http://php.net/manual/en/mysql.installation.php中查看完整的说明。虽然,我宁愿使用@wanovak提出的解决方案。
不过,我认为您需要MySQL支持才能使用PDO。