我已经运行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文件已被解析。
Answers:
好吧,这是你的机会!看来PDO已准备就绪;改用那个。
尝试检查是否正在加载PHP MySQL扩展模块:
<?php
phpinfo();
?>
如果不存在,请将以下内容添加到php.ini
文件中:
extension=php_mysql.dll
mysql_*
从PHP 4.1开始,该函数是危险的,不建议使用。检查您的Apache错误日志并重新启动服务器。那样有用吗?
如果您已经在使用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命令使用不同的参数。
sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql
重要的是,mysql_connect()
自PHP v5.5.0起已弃用。请在此处参考官方文档:PHP:mysql_connect()
如果有人遇到docker php官方映像的问题,请在docker容器内键入以下命令。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
有关更多信息,请参考上面的链接How to install more PHP extensions
(但这对我来说有点困难...)。
否则此文档可能会对您有所帮助。
mysql
是我想要的
我也遇到了未定义的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.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上运行。
仅对于在nguntx目录(/ etc / nginx /)中将Vagrant与ubuntu / nginx一起使用的任何人,都有一个名为“ sites-available”的目录,其中包含一个名为象为无业游民的机器配置的url的文件。就我而言是homestead.app。在此文件中,有一行显示类似
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
在那里,您可以将php版本更改为该特定站点所需的版本。
用谷歌搜索,但实际上并不能找到一个简单的答案,说出要看的地方和要更改的地方。
希望这对任何人都有帮助。谢谢。
(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 Server。(在Windows上,这通常是通过UI完成的)
而已 :)
如果您收到有关丢失的错误 php_mysql.dll
可能需要从php.net网站或pecl.php.net下载此文件。(请谨慎考虑从何处获得)
C:\\php
在系统上肯定没有。
必须有一些语法错误。复制/粘贴此代码,看看它是否有效:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect:' . mysql_error());
}
echo 'Connected successfully';
?
我有同样的错误信息。原来我使用的是msql_connect()
函数而不是mysql_connect()
。