未定义的函数mysql_connect()

时间:2012-12-11 17:12:12

标签: php mysql ubuntu mysql-connect undefined-function

我已经运行aptitude install php5-mysql(并重新启动了MySQL / Apache 2),但我仍然收到此错误:

  

致命错误:在第21行的/home/validate.php中调用未定义的函数mysql_connect()

phpinfo()表示已解析/etc/php5/apache2/conf.d/pdo_mysql.ini文件。

13 个答案:

答案 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部分的链接(但这对我来说有点困难......)。

或者这个文档可以帮助你。

  

https://docs.docker.com/samples/library/php/

答案 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

然后最后重新启动apachemysql服务,您现在应该看到mysqlConfigrations标题下的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下载此文件。 (请关注你从哪里得到它)

有关PHP: Installation of extensions on Windows - Manual

的更多信息

答案 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()