我已經跑aptitude install php5-mysql
(和重新啓動的MySQL/Apache 2的),但我仍然得到這個錯誤:未定義功能mysql_connect()函數
Fatal error: Call to undefined function mysql_connect() in /home/validate.php on line 21
phpinfo()
說/etc/php5/apache2/conf.d/已解析pdo_mysql.ini文件。
我已經跑aptitude install php5-mysql
(和重新啓動的MySQL/Apache 2的),但我仍然得到這個錯誤:未定義功能mysql_connect()函數
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
這是連接數據庫的更好方法嗎?我會研究它,但我真的希望先得到這個工作,因爲它以前一直工作,直到我搬到新的服務器。 – user1765369
它是。從PHP 4.1開始,'mysql_ *'函數是危險的並且被棄用。檢查你的Apache錯誤日誌並重新啓動服務器。那樣有用嗎? – wanovak
我試過重新啓動服務器,仍然發生。 – user1765369
我看到你所標記這與Ubuntu。 MySQL驅動程序(可能還有MySQL)很可能未安裝。假設你有SSH或終端訪問和須藤權限,登錄到服務器並運行此:
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
而且重要的是,mysql_connect()
一直以來PHP V5.5.0棄用。這裏請參考官方文檔:PHP: mysql_connect()
謝謝你更新你的答案 – antix
我得到無法找到包php7.0 – strangetimes
嘗試:
<?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安裝沒有與MySQL支持編譯。
檢查您的配置命令(php -i | grep mysql
)。你應該看到類似'--with-mysql=shared,/usr'
。
您可以在http://php.net/manual/en/mysql.installation.php檢查完整說明。雖然,我寧願使用@wanovak提出的解決方案。
不過,我想你需要MySQL支持才能使用PDO。
必須有一些語法錯誤。複製/粘貼此代碼並查看它是否有效:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect:' . mysql_error());
}
echo 'Connected successfully';
?
我有相同的錯誤消息。原來我使用的是msql_connect()
函數而不是mysql_connect()
。
OP有未定義的函數mysql_connect而不是msql_connect所以他沒有按照你的建議錯誤地輸入。 – PhoenixNoor
好吧,你的代碼肯定有語法錯誤。 –
步驟1:進入的Apache控制面板>阿帕奇>配置> PHP.ini中
步驟2:在記事本(按Ctrl + F)查找:下extension_dir = 「」。將此行替換爲:extension_dir =「C:\ php \ ext」
第3步:搜索:extension = php_mysql.dll並刪除;在乞討。
第4步:保存並重新啓動Apache控制面板。
就是這樣:)
雖然這對於Windows來說可能是正確的,但這個問題被標記爲Ubuntu,在系統上肯定沒有'C:\\ php'。 – tadman
如果你所得到的誤差
Fatal error: Call to undefined function mysql_connect()
請登錄到的cPanel >>單擊選擇PHP版本>>選擇擴展MYSQL
OP在使用CPanel的問題中沒有任何建議。 – Quentin
如果您已經使用了PHP7,則以前棄用的函數mysql_*
已被完全刪除,因此您應該使用PDO函數更新代碼離子或mysqli_*
功能。
如果這是不可能的,因爲一個解決方法我創建了一個小的包含文件,與mysqli_*()
-functions再現了舊的功能:如果有人來這裏的docker php official images問題fix_mysql.inc.php
,鍵入以下命令裏面碼頭集裝箱。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
欲瞭解更多信息,請參見上面的鏈接的How to install more PHP extensions
部分(但它是一個有點困難,我......)。
'mysql'是我想要的 – deFreitas
在php.ini文件
改變這種
;extension=php_mysql.dll
到
extension=php_mysql.dll
問題被加上ubuntu
,但取消註釋的extension=mysqli.dll
的解決方案是特定於Windows 。我在這裏很困惑!!,無論如何,首先運行<? php phpinfo ?>
並在Configuration
標題下搜索mysql*
。如果你沒有看到這樣的事情意味着你沒有安裝或啓用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 maschine 。在我的情況下是homestead.app。在這個文件中有一條線,說類似
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
在那裏你可以改變PHP版本爲所需的特定網站。
谷歌搜索這個,但沒有真的能找到一個簡單的答案,說什麼看什麼和改變。
希望這可以幫助任何人。 謝謝。
我也堅持了未定義的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.
我希望這會幫助你。 此解決方案對我來說正確工作。
格式化你的代碼。參加[遊覽](https://stackoverflow.com/help),瞭解如何在這裏回答問題。 – UmarZaii
其他內置PHP/MySql函數如何?做他們的工作? – samayo
也許不是,因爲我已經嘗試輸入不正確的用戶/密碼,我的'或死'聲明沒有顯示! – user1765369