未定义的函数mysql_connect()

我已经跑aptitude install php5-mysql (并重新启动MySQL / Apache 2),但我仍然得到这个错误:

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

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

那么,这是你的机会! 看起来PDO已经准备好了; 用它代替。

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

 <?php phpinfo(); ?> 

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

 extension=php_mysql.dll 

我看到你用Ubuntu标记了这个。 MySQL驱动程序(可能还有MySQL)很可能没​​有安装。 假设您具有SSH或terminal访问权限和sudo权限,请login到服务器并运行以下命令:

 sudo apt-get install mysql-server mysql-client php5-mysql 

如果MySQL软件包或php5-mysql软件包已安装,则会更新它们。


UPDATE

由于这个答案仍然得到偶然的点击,我将更新它包括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()

如果有人带着docker php官方图片的问题来到这里,请在Docker容器中键入下面的命令。

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

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

如果您已经使用了PHP7,那么以前不推荐使用的函数mysql_*被完全删除,所以您应该使用PDO函数或mysqli_*函数更新您的代码。

如果这是不可能的,作为一种解决方法,我创build了一个小的包含文件,用mysqli_*()函数重新创build旧函数: fix_mysql.inc.php

尝试:

 <?php phpinfo(); ?> 

运行该页面并searchmysql 。 如果找不到,请在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安装没有编译MySQL支持。

检查你的configuration命令( php -i | grep mysql )。 你应该看到'--with-mysql=shared,/usr'

您可以在http://php.net/manual/en/mysql.installation.php查看完整的说明。; 尽pipe如此,我宁愿使用@wanovak提出的解决scheme。

不过,我想你需要MySQL支持才能使用PDO。

我也被困在未定义的MySQL_connect()的同样的问题。我试图在PHP.ini文件进行更改,但它给了我同样的错误。 然后我来到这个解决scheme,我把我的代码从折旧的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. 

我希望这会帮助你。 这个解决scheme对我来说是正确的。

这个问题是用ubuntu标记的,但extension=mysqli.dll的解决scheme是特定于windows的。 我在这里困惑?!,反正,第一件事情运行<? php phpinfo ?> <? php phpinfo ?>并在Configuration标题下searchmysql* 。 如果你没有看到这样的事情意味着你没有安装或启用php-mysql 。 所以先安装php-mysql

sudo apt get install php-mysql

这个命令将安装php-mysql取决于你已经安装的php ,所以不用担心版本问题!!

接下来是unix的具体解决scheme,在php.ini文件中取消注释该行

 extension=msql.so 

确认msql.so存在于/usr/lib/php/<timestamp_folder>ELSE中

 extension=path/to/msql.so 

然后最后重新启动apachemysql服务,现在你应该可以在phpinfo page Configrations标题下看到mysql部分了

在php.ini文件中

改变这一点

 ;extension=php_mysql.dll 

 extension=php_mysql.dll 

我得到这个错误,因为我正在开发的项目是在PHP5.6上开发的,安装后,项目无法在php7.1上运行。

对于任何在ubuntu / nginx中使用Vagrant的用户,在nginx目录(/ etc / nginx /)中,有一个名为“sites-available”的目录,其中包含一个名称与为vagrant maschineconfiguration的url相似的文件。 在我的情况是homestead.app。 在这个文件中有一行说明类似的内容

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

在那里,你可以改变PHP版本到所需的特定网站。

谷歌search,但没有真正能够find一个简单的答案,说什么看什么和改变。

希望这可以帮助任何人。 谢谢。

必须有一些语法错误。 复制/粘贴此代码,看看它是否工作:

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

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

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

步骤2:在记事本中search(Ctrl + F)对于:extension_dir =“”。 将此行replace为:extension_dir =“C:\ php \ ext”

第3步:search:extension = php_mysql.dll并删除; 在乞讨。

第4步:保存并重新启动Apache控制面板。

而已 :)

如果您收到错误

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

请login到cPanel >>点击Select Php version >>select扩展名MYSQL