未安装magento pdo_mysql扩展

时间:2013-01-10 13:03:34

标签: php mysql magento

我遇到了magento命令的问题:php shell / indexer.php reindexall

  

堆栈追踪:

     

0 /home/taatoo/www/lib/Zend/Db/Adapter/Abstract.php(459):> Varien_Db_Adapter_Pdo_Mysql-> _connect()

     

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

     

2 /home/taatoo/www/lib/Varien/Db/Adapter/Pdo/Mysql.php(419):Zend_Db_Adapter_Pdo_Abstract->查询('SET NAMES utf8',数组)

     

3 /home/taatoo/www/app/code/core/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',Object(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):/ home / taatoo / www / lib / Varien / Db / Adapter中的Mage_Core第302行的/Pdo/Mysql.php

第301/302/303行是:

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

或者,如果我在/ home / project / www /或/ home / project / www / lib / Varien / Db / Adapter / Pdo /中执行print_r(get_loaded_extensions());,我正确地获得了“pdo_mysql”扩展名。

如果我在此脚本中执行true,我也会获得var_dump(extension_loaded('pdo_mysql'));

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

您经常会发现用于Web的PHP和PHP CLI(命令行界面)使用不同的php.ini文件。由于您的问题发生在CLI中,请键入php -m并查看列表中是否包含pdo_mysql。如果不是,您可以通过键入php --ini找到要编辑的php.ini文件。

需要在php.ini中的行是extension=php_pdo_mysql.so。最有可能是它,但用分号注释掉。