2012-12-11 54 views
30

我已經跑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文件。

+0

其他內置PHP/MySql函數如何?做他們的工作? – samayo

+0

也許不是,因爲我已經嘗試輸入不正確的用戶/密碼,我的'或死'聲明沒有顯示! – user1765369

回答

32

嗯,這是你的機會!它看起來像PDO已準備好;改用它。

嘗試檢查,看看是否PHP MySQL擴展模塊加載:

<?php 
    phpinfo(); 
?> 

如果它不存在,添加以下到php.ini文件:

extension=php_mysql.dll 
+0

這是連接數據庫的更好方法嗎?我會研究它,但我真的希望先得到這個工作,因爲它以前一直工作,直到我搬到新的服務器。 – user1765369

+2

它是。從PHP 4.1開始,'mysql_ *'函數是危險的並且被棄用。檢查你的Apache錯誤日誌並重新啓動服務器。那樣有用嗎? – wanovak

+0

我試過重新啓動服務器,仍然發生。 – user1765369

40

我看到你所標記這與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()

+1

謝謝你更新你的答案 – antix

+0

我得到無法找到包php7.0 – strangetimes

6

嘗試:

<?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 
4

我的猜測是你的PHP安裝沒有與MySQL支持編譯。

檢查您的配置命令(php -i | grep mysql)。你應該看到類似'--with-mysql=shared,/usr'

您可以在http://php.net/manual/en/mysql.installation.php檢查完整說明。雖然,我寧願使用@wanovak提出的解決方案。

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

-3

必須有一些語法錯誤。複製/粘貼此代碼並查看它是否有效:

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

我有相同的錯誤消息。原來我使用的是msql_connect()函數而不是mysql_connect()

+0

OP有未定義的函數mysql_connect而不是msql_connect所以他沒有按照你的建議錯誤地輸入。 – PhoenixNoor

+0

好吧,你的代碼肯定有語法錯誤。 –

-3

步驟1:進入的Apache控制面板>阿帕奇>配置> PHP.ini中

步驟2:在記事本(按Ctrl + F)查找:下extension_dir = 「」。將此行替換爲:extension_dir =「C:\ php \ ext」

第3步:搜索:extension = php_mysql.dll並刪除;在乞討。

第4步:保存並重新啓動Apache控制面板。

就是這樣:)

+1

雖然這對於Windows來說可能是正確的,但這個問題被標記爲Ubuntu,在系統上肯定沒有'C:\\ php'。 – tadman

-2

如果你所得到的誤差

Fatal error: Call to undefined function mysql_connect()

請登錄到的cPanel >>單擊選擇PHP版本>>選擇擴展MYSQL

+3

OP在使用CPanel的問題中沒有任何建議。 – Quentin

15

如果您已經使用了PHP7,則以前棄用的函數mysql_*已被完全刪除,因此您應該使用PDO函數更新代碼離子或mysqli_*功能。

如果這是不可能的,因爲一個解決方法我創建了一個小的包含文件,與mysqli_*() -functions再現了舊的功能:如果有人來這裏的docker php official images問題fix_mysql.inc.php

+0

針對我的案例的完美解決方案,我不能只升級,並打破我現有的所有代碼。但是,文件中的全局$ con變量是一個問題,因爲包含的文件無法讀取構造函數包含它的父類的全局變量。但是,我只是在需要的包含文件的函數內部創建了一個連接變量。現在我的代碼工作正常。謝謝。 – zeeshan

+0

這對於讓我的老代碼庫在更新的服務器平臺上重新運行非常有幫助。乾杯! – mxmader

20

,鍵入以下命令裏面碼頭集裝箱。

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

欲瞭解更多信息,請參見上面的鏈接的How to install more PHP extensions部分(但它是一個有點困難,我......)。

+1

'mysql'是我想要的 – deFreitas

0

在php.ini文件

改變這種

;extension=php_mysql.dll 

extension=php_mysql.dll 
1

問題被加上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 

然後最後重新啓動apachemysql服務,您現在應該看到mysql部分Configrationsphpinfo page

0

,因爲我工作的項目是在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版本爲所需的特定網站。

谷歌搜索這個,但沒有真的能找到一個簡單的答案,說什麼看什麼和改變。

希望這可以幫助任何人。 謝謝。

4

我也堅持了未定義的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. 

我希望這會幫助你。 此解決方案對我來說正確工作。

+0

格式化你的代碼。參加[遊覽](https://stackoverflow.com/help),瞭解如何在這裏回答問題。 – UmarZaii

相關問題