94

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

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

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

4

14 回答 14

88

如果您已经在使用 PHP7,则以前不推荐使用的函数mysql_*已被完全删除,因此您应该使用 PDO 函数或mysqli_*函数来更新您的代码。

如果这不可能,作为一种解决方法,我创建了一个小的 PHP 包含文件,它mysql_*使用 -functions 重新创建旧函数mysqli_*()fix_mysql.inc.php

于 2016-06-17T09:15:04.057 回答
61

我看到你用 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 命令使用不同的参数。

# Replace 7.4 with your version of PHP
sudo apt-get install mysql-server mysql-common php7.4 php7.4-mysql

重要的是,mysql_connect()自 PHP v5.5.0 起已弃用。请参阅此处的官方文档:PHP:mysql_connect()

于 2012-12-11T17:31:45.400 回答
58

好吧,这是你的机会!看起来PDO已经准备好了;改用它。

尝试检查是否正在加载 PHP MySQL 扩展模块:

<?php
    phpinfo();
?>

如果不存在,请将以下内容添加到php.ini文件中:

extension=php_mysql.dll
于 2012-12-11T17:13:48.940 回答
51

如果有人遇到docker php official images的问题,请在 docker 容器中输入以下命令。

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

有关更多信息,请参阅上面的链接How to install more PHP extensions部分(但这对我来说有点困难......)。

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

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

于 2016-08-04T03:07:28.187 回答
18

我也遇到了未定义的 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

于 2017-08-12T11:26:25.070 回答
9

尝试:

<?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
于 2012-12-11T17:39:44.947 回答
7

在 php.ini 文件中

改变这个

;extension=php_mysql.dll

进入

extension=php_mysql.dll
于 2016-09-20T13:18:12.010 回答
4

我的猜测是您的 PHP 安装没有使用 MySQL 支持编译。

检查您的配置命令 ( php -i | grep mysql)。你应该看到类似的东西'--with-mysql=shared,/usr'

您可以在http://php.net/manual/en/mysql.installation.php查看完整的说明。虽然,我宁愿采用@wanovak 提出的解决方案。

不过,我认为您需要 MySQL 支持才能使用 PDO。

于 2012-12-11T17:40:41.270 回答
3

该问题被标记为ubuntu,但取消注释的解决方案extension=mysqli.dll是特定于 windows 的。我在这里很困惑?!无论如何,首先运行并在标题下<? php phpinfo ?>搜索。如果你没有看到这样的东西意味着你没有安装或启用。所以先安装mysql*Configurationphp-mysqlphp-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服务,您现在应该看到标题mysql下的部分Configrationsphpinfo page

于 2016-12-09T16:48:53.830 回答
0

我收到此错误是因为我正在处理的项目是在 php 5.6 上开发的,安装后,该项目无法在 php7.1 上运行。

对于任何在 ubuntu/nginx 中使用 Vagrant 的人,在 nginx 目录(/etc/nginx/)中,有一个名为“sites-available”的目录,其中包含一个名称类似于为 vagrant 机器配置的 url 的文件。在我的例子中是 homestead.app。在这个文件中有一行写着类似

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

在那里,您可以将 php 版本更改为该特定站点所需的版本。

谷歌搜索了这个,但并没有真正找到一个简单的答案,说明在哪里寻找和改变什么。

希望这对任何人都有帮助。谢谢。

于 2017-08-09T19:16:21.590 回答
0

适用于 CentOS 7.8 和 PHP 7.3

yum install rh-php73-php-mysqlnd

然后重启apache/php。

于 2020-10-07T21:32:21.587 回答
-1

如果您收到错误消息

致命错误:调用未定义函数 mysql_connect()

请登录 cPanel >>点击选择 PHP 版本>>选择扩展名 MYSQL

于 2016-05-04T08:19:16.017 回答
-3

一定有一些语法错误。复制/粘贴此代码,看看它是否有效:

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

我有同样的错误信息。原来我使用的是msql_connect()函数而不是mysql_connect().

于 2015-07-11T18:10:00.530 回答
-3

(Windows mysql 配置)

第 1 步:转到 Apache 控制面板 > Apache > 配置 > PHP.ini

第 2 步:在记事本 (Ctrl+F) 中搜索:(;extension_dir = ""可以用 注释;)。将此行替换为:(extension_dir = "C:\php\ext"请不要删除;句子开头的)。

第 3 步:搜索:extension=php_mysql.dll并删除;开头的。

第 4 步:保存并重新启动 Apache HTTP 服务器。(在 Windows 上,这通常通过 UI 完成)

就是这样 :)

如果您收到有关丢失的错误,php_mysql.dll您可能需要从 php.net 站点或 pecl.php.net 下载此文件。(请注意你从哪里得到它)

有关 PHP 的更多信息:在 Windows 上安装扩展 - 手册

于 2016-04-24T14:29:24.247 回答