2013-01-10 137 views
1

我有Magento的命令一個問題:PHP殼/ indexer.php reindexallMagento的PDO_MYSQL擴展未安裝

堆棧跟蹤:

0 /家庭/ taatoo/WWW/lib中/的Zend/DB /Adapter/Abstract.php(459):> Varien_Db_Adapter_Pdo_Mysql - > _連接()

1 /home/taatoo/www/lib/Zend/Db/Adapter/Pdo/Abstract.php(238):Zend_Db_Adapter_Abstract->查詢('SET NAMES utf8',Array)

2/home/taatoo/ww w/lib/Varien/Db/Adapter/Pdo/Mysql.php(419):Zend_Db_Adapter_Pdo_Abstract-> query('SET NAMES utf8',Array)

3/home/taatoo/www/app/code/Mage/Core/Model/Resource.php(169):Varien_Db_Adapter_Pdo_Mysql-> query('SET NAMES utf8')

4/home/taatoo/www/app/code/core/Mage/Core/Model/Resource。 PHP(110):Mage_Core_Model_Resource - > _ newConnection( 'PDO_MYSQL',對象(Mage_Core_Model_Config_Element))

5 /home/taatoo/www/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php (320):Mage_Core_Model_Resource-> getConnection('core_write')

6 /home/taatoo/www/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(350):Mage_Core in/home/taatoo/www/lib/Varien/Db/Adapter/Pdo /Mysql.php線302

線301/302/303是:

if (!extension_loaded('pdo_mysql')) { 
    throw new Zend_Db_Adapter_Exception('pdo_mysql extension is not installed'); 
} 

或者,如果我在/ home /項目/ WWW /或/家庭/項目/ WWW執行print_r(get_loaded_extensions());/lib/Varien/Db/Adapter/Pdo /我正確得到「pdo_mysql」擴展名。

我也得到true如果我在這個腳本中做var_dump(extension_loaded('pdo_mysql'));

false,如果我做同樣的事情在/home/project/www/lib/Varien/Db/Adapter/Pdo/Mysql.php

+2

你在瀏覽器中執行print_r/var_dump嗎?這聽起來像他是網絡和控制檯PHP配置之間的不匹配:) –

+0

是@DanielSloof它似乎也是我的;) –

回答

1

正如你可能會使用兩個不同的PHP的評論中提到。 ini文件。
要檢查,請改變throw new Zend_Db_Adapter_Exception

throw new Zend_Db_Adapter_Exception(
    'pdo_mysql extension is not installed. php.ini:' 
    . get_cfg_var('cfg_file_path') 
); 

,結果與

var_dump(get_cfg_var('cfg_file_path'), extension_loaded('pdo_mysql')); 

在命令行腳本輸出比較。

還看到:
http://docs.php.net/manual/en/function.get-cfg-var.php
http://docs.php.net/manual/en/function.php-ini-loaded-file.php
http://docs.php.net/manual/en/function.php-ini-scanned-files.php

1

你經常會發現PHP網頁和PHP CLI(命令行接口)使用不同的php.ini文件。由於您的問題發生在CLI中,請鍵入php -m並查看pdo_mysql是否在列表中。如果不是,您可以通過輸入php --ini來找出要編輯的php.ini文件。

需要在php.ini中的行是extension=php_pdo_mysql.so。它最有可能在那裏,但用分號註釋掉。