我正在php命令行中運行一個php頁面來更新一個mysql數據庫一旦php exec命令完成。這一直工作正常。命令行PHP mysql_connect()錯誤
不過,我剛剛重新安裝了服務器,現在當我在命令行上運行腳本返回以下錯誤:
Fatal error: Call to undefined function mysql_connect()
的腳本運行在瀏覽器中細,這意味着MySQL的安裝OK 。 如何在PHP中啓用mysql以從命令行運行?
非常感謝。
我正在php命令行中運行一個php頁面來更新一個mysql數據庫一旦php exec命令完成。這一直工作正常。命令行PHP mysql_connect()錯誤
不過,我剛剛重新安裝了服務器,現在當我在命令行上運行腳本返回以下錯誤:
Fatal error: Call to undefined function mysql_connect()
的腳本運行在瀏覽器中細,這意味着MySQL的安裝OK 。 如何在PHP中啓用mysql以從命令行運行?
非常感謝。
首先,你可以使用
php -m
在命令行
,以檢查其擴展名被啓用。
如果mysql不在列表中,這意味着它沒有啓用/加載 - 這可能是這種情況。
然後,你需要使用
php --ini
檢查哪些.ini
文件(S)是由PHP讀取/。
一旦你發現了它php.ini
文件時,你必須進行編輯,並添加這樣的:
; configuration for php MySQL module
extension=mysql.so
要加載mysql
擴展。
根據您的分佈,可能是每延長一個.ini
文件(Ubuntu的這樣做,例如)。
如果是這種情況,您也可以創建一個新的.ini
文件(例如mysql.ini
),並將其放入新文件中的兩行。
檢查您的PHP可執行文件的路徑。您沒有提及這是哪個操作系統,但是,例如,在OSX下運行php
將執行內置的PHP解釋器。如果你使用的是MAMP,你需要運行/Applications/MAMP/bin/php5.2/bin/php
(或者你的路徑)來模擬瀏覽器中運行的內容。
相應地更改您的Web服務器的php路徑(基於AMP安裝,操作系統等)。
我不久以前也有類似的問題(也許是同樣的問題你):
我指定我在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
。
對我來說,答案是將腳本中的第一行從'#!/ usr/bin/php'更改爲'#!/ usr/bin/php -c /etc/php.ini'。
即使'php --ini'表示它正在處理正確的.ini文件,但它不是,所以我不得不強制它在腳本的標題行上。
感謝您的回覆。我已經嘗試過,但沒有任何運氣。問題是,當我在CLI中運行php --ini時,表明我的php.ini配置文件位於/ usr/local/lib中,這是不正確的。請在這裏看到我的新問題:http://stackoverflow.com/questions/5132978/php-command-line-php-ini-path-error。 – Kit 2011-02-27 11:39:02
這是一個救生員。對我來說,MySQL正在拋出一個'extension not found'錯誤,但只有在命令行上運行,並將這一行添加到php.ini中才能解決問題。 – 2013-11-06 02:30:13
注意:現在PHP7不存在了,請確保您的命令行使用與您配置的PHP安裝相同的PHP安裝。在命令行上使用'php --ini'我注意到它使用的是PHP7,我現在還沒有使用它。 將命令從'php/foo/bar.php'切換到'php5.6/foo/bar.php'修復了我的錯誤 – Ray 2017-02-07 14:18:11