1

我对 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->query('SET NAMES utf8', Array)

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

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/Pdo/中的Mage_Core 302行的mysql.php

第 301/302/303 行是:

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

或者,如果我print_r(get_loaded_extensions());在 /home/project/www/ 或 /home/project/www/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 做同样的事情

4

2 回答 2

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

于 2013-01-10T13:21:08.003 回答
1

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

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

于 2014-10-13T10:40:45.810 回答