我正在尝试使用命令行使用命令行使用“ php indexer.php -reindex catalog_url”命令行来重新索引我的catalog_url_url_rewrite表(Magento网站)。我收到以下错误:

PHP Fatal error:  Maximum execution time of 60 seconds exceeded in /var/www/domain.com/lib/Zend/Db/Statement.php on line 141

误差上的文件和行都会有所不同。

我已经进行了仔细检查,以确认命令行中的PHP确实正在使用PHP -CLI版本(通过使用“ PHP -I”),并且其配置中没有限制应产生此类错误。

我还环顾四周,查看是否有任何Magento文件手动设置“ set_time_limit”,但找不到任何指向的东西。我在任何地方都找不到60秒的max_execution_time。

对发生的事情有什么想法吗?

编辑:

到目前为止,我尝试过:

  • 运行“ php -d max_execution_time = 0 indexer.php -reindex catalog_url”
  • 设置“ set_time_limit(9000);”直接在indexer.php上。
  • 运行“ php -i”以查看“配置文件(php.ini)路径=>/etc/php5/cli”&“加载配置文件=> /etc/php5/cli/php.ini”
  • 在FPM的php.ini上设置max_execution_time将其设置为61,只是为了查看它是否偶然使用它。
  • 确保“ set_time_limit(60)”在Magento框架中没有任何硬编码。
有帮助吗?

解决方案

我遇到了这个。问题是扩展了shell脚本 Mage_Shell_Abstract 继承了适用于Magento的PHP INI设置的行为 .htaccess 文件。

看一下方法 protected function _applyPhpVariables()shell/abstract.php.

最简单的修复是只编辑 .htaccess 并评论 php_value 指令 execution_time 和或 memory_limit. 。或者,您可以通过覆盖索引来扩展索引器 applyPhpVariables() 方法并停止处理 .htaccess.

当我第一次发现此“功能”时,我向我的宣誓罐捐款。

其他提示

尝试从Magento安装的根部运行此操作:

php -d max_execution_time=0 ./shell/indexer.php --reindex catalog_url

如果此命令发生同样的错误失败,那么正在发生疯狂的事情。 :)

要指出的一件事是,Magento Shell命令命令parse htaccess文件,并将应用其找到的设置(例如时间限制)。我会检查您的HTACCESS文件。

看到我前一段时间写的这篇文章:http://edmondscommerce.github.io/magento/magento-shell-scripts-and-memory-limit-woes-solution.html

许可以下: CC-BY-SA归因
scroll top