編輯:好吧,我看到了我誤解你的問題了一點,但我仍覺得有什麼不對有關php.ini的路徑。你可以檢查兩個Web調用的phpinfo()輸出。答案的基本思想保持相同的陳述如下(與第二網絡調用替換CLI))
OLD ANSWER
假設,你有更多的共同的Linux發行版之一(Ubuntu的, debian,suse等),你可能有兩個(或更多)php.ini文件。當使用web服務器模塊(它似乎是apache)時,它會被拉出來,另一個用於cli env。根據SAPI,php支持最多一個php.ini。
在較新的debian和ubuntu系統中,php擴展的鏈接方式與apache配置中的sites-available/enabled相同。
如果您在php.ini(默認爲/ usr/local/share/php)的公共位置有一個php-cli.ini的自編譯php外觀。如果存在一個php-cli.ini,它將被用來代替cli命令的php.ini。
(手動參考:http://de2.php.net/manual/en/configuration.file.php)
如何找出: 獲取phpinfo()輸出爲INFO_GENERAL部分從您的網絡服務器。爲了達到這個目的,可以在一個web可訪問的目錄(例如DocumentRoot)中創建一個簡單的php文件。記得在獲得您需要的信息後將其刪除!請將'/ var/www'調整爲與您的配置相匹配的內容。
$> echo '<?php phpinfo(INFO_GENERAL);' > /var/www/info.php
現在去你的瀏覽器並打開http://your.host.name/info.php並查找配置屬性「配置文件(php.ini中)路徑」。請注意這個地方,或只是打開頁面供以後參考。
在你的cli上,這也很容易。下面的例子是我的shell中的一個剪輯。
[email protected] ~$ php -i | grep ini
Configuration File (php.ini) Path => /usr/local/etc/php/5.5
Loaded Configuration File => /usr/local/etc/php/5.5/php.ini
[... omitted the tail]
比較兩條路徑,看看它們是否不同。
要了解發生這種情況的原因,請查看「配置命令」部分。您可能會發現三個重要的配置參數。這三個影響PHP在尋找它的配置。
'--sysconfdir=/usr/local/etc/php/5.5'
'--with-config-file-path=/usr/local/etc/php/5.5'
'--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d'
如果你想確保相同的配置,你可以做以下的事情之一:
- 只需添加
extension=pdo_mysql
到Web服務器的版本,看看是否有足夠
- 移除多餘的CLI配置(如果有的話),這將使php使用所有SAPI的php.ini(在做這些之前先備份文件!)。然後你需要將規則合併到你需要的php.ini中。 (在你的情況下,似乎有
extension=pdo_mysql
失蹤)
- 檢查網絡服務器php.ini的任何你不想在cli版本中,然後通過CLI複製網絡服務器php.ini php.ini(Do先備份)。
- 刪除cli或web服務器php.ini,將其他php.ini的符號鏈接到已刪除的位置。 (不是最好的方法,但我在客戶服務器上看到了很多)。
在這兩種情況下,您是通過網絡服務器運行腳本嗎? – andho
請嘗試以下測試:www.qualocep.com/dbc/和www.qualocep.com/php/dbc.php –