我已经运行了aptitude install php5-mysql
(并重新启动了MySQL / Apache 2),但仍然收到以下错误:
致命错误:在/home/validate.php的第21行调用未定义的函数mysql_connect()
phpinfo()
显示已解析/etc/php5/apache2/conf.d/pdo_mysql.ini文件。
我已经运行了aptitude install php5-mysql
(并重新启动了MySQL / Apache 2),但仍然收到以下错误:
致命错误:在/home/validate.php的第21行调用未定义的函数mysql_connect()
phpinfo()
显示已解析/etc/php5/apache2/conf.d/pdo_mysql.ini文件。
如果您正在使用PHP7,那么以前被弃用的函数mysql_*
已经完全被删除,因此您应该更新代码使用PDO函数或mysqli_*
函数。
如果不可能更新代码,可以采用 解决方法,我创建了一个小的PHP包含文件,使用mysqli_*()
函数重新创建旧的mysql_*
函数: fix_mysql.inc.php
我看到您标记了Ubuntu。很可能MySQL驱动程序(以及可能的MySQL)未安装。假设您具有SSH或终端访问权限和sudo权限,请登录服务器并运行以下命令:
sudo apt-get install mysql-server mysql-client php5-mysql
更新
由于这个答案仍然会偶尔被点击,我将更新它以包括PHP 7。 PHP 7需要一个不同的MySQL软件包,因此您将需要使用apt-get命令的不同参数。
# Replace 7.4 with your version of PHP
sudo apt-get install mysql-server mysql-common php7.4 php7.4-mysql
重要的是,自PHP v5.5.0起,mysql_connect()
已被弃用。请参考官方文档:PHP:mysql_connect()
好的,这是你的机会!看起来 PDO 已经准备就绪了,使用它吧。
尝试检查一下是否正在加载 PHP MySQL 扩展模块:
<?php
phpinfo();
?>
如果没有该项设置,将以下内容添加到 php.ini
文件中:
extension=php_mysql.dll
mysql_*
函数在PHP 4.1版本之后已经被弃用且存在安全隐患。请检查您的Apache错误日志并重新启动服务器。这样行吗? - wanovakphp.ini
文件中存在,但被注释掉了。安装php_mysql
的程序难道不应该为你取消注释这一行吗? - undefined$ docker-php-ext-install mysql mysqli pdo pdo_mysql
请参考上面链接中的如何安装更多PHP扩展
一节获取更多信息(但对我来说有点困难...)。
或者这个文档可能会帮到您。
我也遇到了同样的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
to
extension=php_mysql.so
;extension=php_mysql.dll
转换为
extension=php_mysql.dll
php -i | grep mysql
)。你应该看到类似于'--with-mysql=shared,/usr'
这样的内容。你可以在http://php.net/manual/en/mysql.installation.php上查找完整的说明。尽管如此,我更倾向于采用@wanovak提出的解决方案。但是,我认为你需要MySQL支持才能使用PDO。ubuntu
,但是取消注释 extension=mysqli.dll
的解决方案只适用于 Windows。我感到困惑!总之,首先运行 <? php phpinfo ?>
并在 Configuration
标题下搜索 mysql*
。如果找不到这样的内容,则说明您尚未安装或启用 php-mysql
。因此,首先安装 php-mysql
。
sudo apt get install php-mysql
该命令将根据您已经安装的 php
安装 php-mysql
,所以不用担心版本问题!!。
然后,针对 Unix 的特定解决方案是,在php.ini
文件中取消注释该行:
extension=msql.so
请确认/usr/lib/php/<timestamp_folder>
文件夹中是否存在msql.so
文件,否则
extension=path/to/msql.so
最后重启 apache
和 mysql
服务,现在您应该在 phpinfo页面的Configurations标题下
看到 mysql
部分。
我遇到了这个错误,因为我正在开发的项目是在php 5.6上开发的,安装后,该项目无法在php7.1上运行。
对于任何使用Vagrant和ubuntu/nginx的人,在nginx目录(/etc/nginx/)中,有一个名为“sites-available”的目录,其中包含一个文件,命名为vagrant机器配置的url。在我的情况下是homestead.app。在此文件中,有一行类似于以下内容:
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
在那里,您可以将 PHP 版本更改为特定站点所需的版本。
我搜索了一下,但并没有真正找到一个简单的答案,告诉我去哪里查找和更改。
希望这可以帮助任何人。 谢谢。