問題描述
我已經運行了aptitude install php5-mysql
(並重新啟動了MySQL /Apache 2),但是仍然出現此錯誤:
Fatal error: Call to undefined function mysql_connect() in /home/validate.php on line 21
phpinfo()
表示/etc/php5/apache2/conf.d/pdo_mysql.ini文件已被解析。
最佳方案
好吧,這是你的機會!看來PDO已經準備好;用它代替。
嘗試檢查是否正在加載PHP MySQL擴展模塊:
<?php
phpinfo();
?>
如果不存在,請將以下內容添加到php.ini
文件:
extension=php_mysql.dll
次佳方案
我看到您使用Ubuntu對此進行了標記。很可能未安裝MySQL驅動程序(可能還有MySQL)。假設您具有SSH或終端訪問權限和sudo權限,請登錄服務器並運行以下命令:
sudo apt-get install mysql-server mysql-client php5-mysql
如果已經安裝了MySQL軟件包或php5-mysql軟件包,它將對其進行更新。
更新
由於此答案偶爾仍然會引起單擊,因此我將對其進行更新,使其包括PHP7。PHP7需要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()
第三種方案
如果您已經在使用PHP7,則先前已棄用的函數mysql_*
被完全刪除,因此您應該使用PDO-functions或mysqli_*
函數來更新代碼。
如果不可能,作為解決方法,我創建了一個小的PHP包含文件,該文件使用mysqli_*()
重新創建了舊的mysql_*
函數-functions:fix_mysql.inc.php
第四種方案
如果有人來到這裏遇到docker php official images的問題,請在docker容器內鍵入以下命令。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
有關更多信息,請參閱How to install more PHP extensions
部分上方的鏈接(但對我來說有點難…)。
否則此文檔可能會對您有所幫助。
第五種方案
我也遇到了undefined 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。