2011-02-25 74 views
6

我正在php命令行中運行一個php頁面來更新一個mysql數據庫一旦php exec命令完成。這一直工作正常。命令行PHP mysql_connect()錯誤

不過,我剛剛重新安裝了服務器,現在當我在命令行上運行腳本返回以下錯誤:

Fatal error: Call to undefined function mysql_connect() 

的腳本運行在瀏覽器中細,這意味着MySQL的安裝OK 。 如何在PHP中啓用mysql以從命令行運行?

非常感謝。

回答

11

首先,你可以使用

php -m 
在命令行

,以檢查其擴展名被啓用。

如果mysql不在列表中,這意味着它沒有啓用/加載 - 這可能是這種情況。


然後,你需要使用

php --ini 

檢查哪些.ini文件(S)是由PHP讀取/。


一旦你發現了它php.ini文件時,你必須進行編輯,並添加這樣的:

; configuration for php MySQL module 
extension=mysql.so 

要加載mysql擴展。


根據您的分佈,可能是每延長一個.ini文件(Ubuntu的這樣做,例如)

如果是這種情況,您也可以創建一個新的.ini文件(例如mysql.ini),並將其放入新文件中的兩行。

+0

感謝您的回覆。我已經嘗試過,但沒有任何運氣。問題是,當我在CLI中運行php --ini時,表明我的php.ini配置文件位於/ usr/local/lib中,這是不正確的。請在這裏看到我的新問題:http://stackoverflow.com/questions/5132978/ph​​p-command-line-php-ini-path-error。 – Kit 2011-02-27 11:39:02

+0

這是一個救生員。對我來說,MySQL正在拋出一個'extension not found'錯誤,但只有在命令行上運行,並將這一行添加到php.ini中才能解決問題。 – 2013-11-06 02:30:13

+0

注意:現在PHP7不存在了,請確保您的命令行使用與您配置的PHP安裝相同的PHP安裝。在命令行上使用'php --ini'我注意到它使用的是PHP7,我現在還沒有使用它。 將命令從'php/foo/bar.php'切換到'php5.6/foo/bar.php'修復了我的錯誤 – Ray 2017-02-07 14:18:11

4

檢查您的PHP可執行文件的路徑。您沒有提及這是哪個操作系統,但是,例如,在OSX下運行php將執行內置的PHP解釋器。如果你使用的是MAMP,你需要運行/Applications/MAMP/bin/php5.2/bin/php(或者你的路徑)來模擬瀏覽器中運行的內容。

相應地更改您的Web服務器的php路徑(基於AMP安裝,操作系統等)。

0

我不久以前也有類似的問題(也許是同樣的問題你):

我指定我在Apache的配置首選的php.ini。但是,這顯然不會影響CLI中的php。檢查使用哪個php.ini php:php --ini。要麼修改它,要麼通過更改其中一些選擇不同的配置文件:

php。INI搜索在這些位置(按順序):

  • SAPI模塊特定位置(PHPIniDir指令Apache 2中,在CGI和CLI -c命令行選項,在NSAPI php_ini參數,在THTTPD PHP_INI_PATH環境變量)

  • PHPRC環境變量。在PHP 5.2.0之前,這是在下面提到的註冊表鍵後檢查的。

  • 從PHP 5.2.0開始,可以爲不同版本的PHP設置php.ini文件的位置。按順序檢查以下注冊表項:[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz],[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy]和[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x],其中x,y和z表示PHP主要,次要版本和發佈版本。如果在這些鍵中有IniFilePath的值,則找到的第一個將用作php.ini的位置(僅限Windows)。

  • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP],IniFilePath的值(僅限Windows)。

  • 當前工作目錄(對於CLI)

  • Web服務器的目錄(對於SAPI模塊)或PHP目錄(Windows下其它情況)

  • Windows目錄下(C:\ Windows或C :\ WINNT)(適用於Windows),或--with-配置文件路徑編譯時選項

我剛剛修改了PHPRC環境變量,以我的首選位置php.ini

0

對我來說,答案是將腳本中的第一行從'#!/ usr/bin/php'更改爲'#!/ usr/bin/php -c /etc/php.ini'。

即使'php --ini'表示它正在處理正確的.ini文件,但它不是,所以我不得不強制它在腳本的標題行上。