1

我与 Magento 合作了很长一段时间,但最近我很沮丧,因为我收到“允许的内存大小”错误。这通常是通过增加相关 .htaccess 文件中的“php_value memory_limit”来解决的(根据我的理解),自我推出商店之日起,我已将其设置为较高的值。

无论如何,尽管我最近在 error_log 中收到以下错误:

    PHP Fatal error:  Allowed memory size of 52428800 bytes exhausted (tried to allocate 10282 bytes) in /home/store/public_html/includes/src/__default.php on line 2976
    PHP Fatal error:  Allowed memory size of 52428800 bytes exhausted (tried to allocate 32 bytes) in /home/store/public_html/includes/src/__default.php on line 56485
    PHP Fatal error:  Allowed memory size of 52428800 bytes exhausted (tried to allocate 77 bytes) in /home/store/public_html/includes/src/__default.php on line 56485

如果有帮助,我将指出以下相关行。(问题中的行标有** **)

2976:

    try {
        $includeFilePath = realpath($this->_viewDir . DS . $fileName);
        if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {
            **include $includeFilePath;**
        } else {
            Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
        }

56485:

public function fetchAll($style = null, $col = null)
{
    if ($style === null) {
        $style = $this->_fetchMode;
    }
    try {
        if ($style == PDO::FETCH_COLUMN) {
            if ($col === null) {
                $col = 0;
            }
            return $this->_stmt->fetchAll($style, $col);
        } else {
            **return $this->_stmt->fetchAll($style);**
        }
    } catch (PDOException $e) {
        #require_once 'Zend/Db/Statement/Exception.php';
        throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
    }
}

在这里我觉得奇怪的是“52428800 字节”,据我了解,它转换为 50MB。这些 50MB 可以在哪里预定义?我清楚地检查了我的 php 信息,但该值无处可见,“php_value memory_limit”也与我之前定义的相对应,并且远不接近 50MB。

我的 Magento 设置:

  • Magento 1.5.10
  • 已启用内存缓存
  • 启用编译

硬件设置:

  • 具有 12GB 内存的 VPS
  • WHM / cPanel
  • NginxCP

当前的 PHP 配置:

  • 默认 PHP 版本(.php 文件) 5
  • PHP 5 处理程序 dso
  • PHP 4 处理程序无
  • Apache suEXEC 上
  • Apache Ruid2 上

如果有人能够为我指出如何解决这个问题的正确方向,我将非常感激。谢谢你。

4

1 回答 1

0

这可以设置在

  1. php.ini文件_

  2. 您的 Apache 配置(.htaccesshttp.conf/it's 包括)

  3. 在运行时调用ini_set

更有可能的是,您的网络主机安装了限制内存的第三方 PHP 扩展程序(例如suhosin。我会先联系他们,然后再花很多时间追逐鬼魂。

于 2013-01-20T04:33:20.963 回答