我已经运行aptitude install php5-mysql
(并重新启动了MySQL / Apache 2),但我仍然收到此错误:
致命错误:在第21行的/home/validate.php中调用未定义的函数mysql_connect()
phpinfo()
表示已解析/etc/php5/apache2/conf.d/pdo_mysql.ini文件。
答案 0 :(得分:51)
我看到你用Ubuntu标记了这个。很可能没有安装MySQL驱动程序(可能还有MySQL)。假设您拥有SSH或终端访问权限和sudo权限,请登录服务器并运行:
sudo apt-get install mysql-server mysql-client php5-mysql
如果已安装MySQL软件包或php5-mysql软件包,则会更新它们。
<强>更新强>
由于此答案仍会偶尔发生,我将更新它以包含 PHP 7 。 PHP 7需要一个不同的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()
答案 1 :(得分:44)
嗯,这是你的机会!看起来PDO已准备就绪;请改用它。
尝试检查是否正在加载PHP MySQL扩展模块:
<?php
phpinfo();
?>
如果不存在,请将以下内容添加到php.ini
文件中:
extension=php_mysql.dll
答案 2 :(得分:34)
如果有人来到这里遇到问题docker php official images,请在泊坞窗容器内输入以下命令。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
有关详细信息,请参阅上面How to install more PHP extensions
部分的链接(但这对我来说有点困难......)。
或者这个文档可以帮助你。
答案 3 :(得分:31)
如果您已经使用PHP7,之前已弃用的函数mysql_*
已被完全删除,因此您应该使用PDO函数或mysqli_*
函数来更新代码。
如果这不可能,作为解决方法,我创建了一个小的PHP包含文件,该文件使用mysql_*
重新创建旧的mysqli_*()
函数 - 函数:{{3} }
答案 4 :(得分:5)
尝试:
<?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
答案 5 :(得分:5)
在php.ini文件中
更改此
;extension=php_mysql.dll
到
extension=php_mysql.dll
答案 6 :(得分:4)
我的猜测是你的PHP安装没有用MySQL支持编译。
检查配置命令(php -i | grep mysql
)。您应该看到类似'--with-mysql=shared,/usr'
的内容。
您可以在http://php.net/manual/en/mysql.installation.php查看完整说明。虽然,我宁愿选择@wanovak提出的解决方案。
但是,我认为你需要MySQL支持才能使用PDO。
答案 7 :(得分:1)
问题标有ubuntu
,但取消评论extension=mysqli.dll
的解决方案特定于Windows。我在这里很困惑?!,无论如何,首先运行<? php phpinfo ?>
并在mysql*
标题下搜索Configuration
。如果您没有看到这样的事情意味着您尚未安装或启用php-mysql
。首先安装php-mysql
sudo apt get install php-mysql
此命令将根据您已安装的php-mysql
安装php
,因此无需担心版本!!。
然后出现了unix特定的解决方案,在php.ini
文件中取消注释行
extension=msql.so
确认msql.so
中存在/usr/lib/php/<timestamp_folder>
,
的 ELSE 强>
extension=path/to/msql.so
然后最后重新启动apache
和mysql
服务,您现在应该看到mysql
下Configrations
标题下的phpinfo page
部分
答案 8 :(得分:0)
我收到此错误是因为我正在开发的项目是在php 5.6上开发的,安装后,该项目无法在php7.1上运行。
对于任何使用Vagrant和ubuntu / nginx的人,在nginx目录(/ etc / nginx /)中,都有一个名为&#34; sites-available&#34;的目录。其中包含一个名为url为流浪机配置的文件。在我的情况下是homestead.app。在这个文件中有一行代表
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
在那里你可以将php版本更改为该特定网站所需的版本。
用Google搜索,但实际上并没有找到一个简单的答案,说明要去哪里以及要改变什么。
希望这对任何人都有帮助。 感谢。
答案 9 :(得分:0)
对于CentOS 7.8和PHP 7.3
yum install rh-php73-php-mysqlnd
然后重新启动apache / php。
答案 10 :(得分:-2)
(Windows mysql配置)
步骤1:转到Apache控制面板&gt; Apache&gt;配置&gt; PHP.ini
步骤2:在记事本中搜索(Ctrl + F)对于:;extension_dir = ""
(可以使用;
进行评论)。将此行替换为:extension_dir = "C:\php\ext"
(请不要删除句子开头的;
。)
第3步:搜索:extension=php_mysql.dll
并在开头删除;
。
步骤4:保存并重启Apache HTTP Server。 (在Windows上,这通常通过UI完成)
那就是它:)
如果您收到有关遗失php_mysql.dll
的错误,您可能需要从php.net网站或pecl.php.net下载此文件。 (请关注你从哪里得到它)
答案 11 :(得分:-2)
如果您收到错误
致命错误:调用未定义的函数mysql_connect()
请登录cPanel &gt;&gt; 点击选择Php版&gt;&gt; 选择扩展名MYSQL
答案 12 :(得分:-3)
必须有一些语法错误。复制/粘贴此代码,看看它是否有效:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect:' . mysql_error());
}
echo 'Connected successfully';
?
我有同样的错误消息。事实证明我使用msql_connect()
函数而不是mysql_connect()
。