我已经运行aptitude install php5-mysql
(并重新启动了 MySQL/Apache 2),但我仍然收到此错误:
致命错误:在第 21 行的 /home/validate.php 中调用未定义函数 mysql_connect()
phpinfo()
表示 /etc/php5/apache2/conf.d/pdo_mysql.ini 文件已被解析。
我已经运行aptitude install php5-mysql
(并重新启动了 MySQL/Apache 2),但我仍然收到此错误:
致命错误:在第 21 行的 /home/validate.php 中调用未定义函数 mysql_connect()
phpinfo()
表示 /etc/php5/apache2/conf.d/pdo_mysql.ini 文件已被解析。
如果您已经在使用 PHP7,则以前不推荐使用的函数mysql_*
已被完全删除,因此您应该使用 PDO 函数或mysqli_*
函数来更新您的代码。
如果这不可能,作为一种解决方法,我创建了一个小的 PHP 包含文件,它mysql_*
使用 -functions 重新创建旧函数mysqli_*()
:fix_mysql.inc.php
我看到你用 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()
好吧,这是你的机会!看起来PDO已经准备好了;改用它。
尝试检查是否正在加载 PHP MySQL 扩展模块:
<?php
phpinfo();
?>
如果不存在,请将以下内容添加到php.ini
文件中:
extension=php_mysql.dll
如果有人遇到docker php official images的问题,请在 docker 容器中输入以下命令。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
有关更多信息,请参阅上面的链接How to install more PHP extensions
部分(但这对我来说有点困难......)。
或者这个文档可以帮助你。
我也遇到了未定义的 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。
该问题被标记为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
我收到此错误是因为我正在处理的项目是在 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 版本更改为该特定站点所需的版本。
谷歌搜索了这个,但并没有真正找到一个简单的答案,说明在哪里寻找和改变什么。
希望这对任何人都有帮助。谢谢。
适用于 CentOS 7.8 和 PHP 7.3
yum install rh-php73-php-mysqlnd
然后重启apache/php。
如果您收到错误消息
致命错误:调用未定义函数 mysql_connect()
请登录 cPanel >>点击选择 PHP 版本>>选择扩展名 MYSQL
一定有一些语法错误。复制/粘贴此代码,看看它是否有效:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect:' . mysql_error());
}
echo 'Connected successfully';
?
我有同样的错误信息。原来我使用的是msql_connect()
函数而不是mysql_connect()
.
(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 上安装扩展 - 手册