未定义的函数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
然后最后重新启动apache
和mysql
服务,现在你应该可以在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