【问题标题】:Magento frustrating memory limitMagento 令人沮丧的内存限制
【发布时间】:2013-01-03 12:09:21
【问题描述】:

我使用 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 RAM 的 VPS
  • WHM / cPanel
  • NginxCP

当前 PHP 配置:

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

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

【问题讨论】:

    标签: php magento magento-1.5


    【解决方案1】:

    这个可以设置

    1. php.ini 文件

    2. 您的 Apache 配置(.htaccesshttp.conf/包括在内)

    3. 在运行时调用ini_set

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

    【讨论】:

    • 感谢 Storm 先生的信息。如前所述,.htaccess 文件已经具有很高的价值。我快速检查了我的 VPS 中的 PHP 配置编辑器,Core memory_limit 也设置得相当高。 (2048 MB)。有任何想法吗? PS:我在最初的帖子中添加了我当前的 PHP 配置范围
    • 尝试用 phpinfo() 创建一个快速文件;调用,它会告诉您当前设置的内存限制(以及是否安装了 suhosin)。 php.net/manual/en/function.phpinfo.php
    • @nickyfsh 就像 Roscius 说的,运行一个 phpinfo();在某处获取当前配置的快照。
    • 亲爱的,非常感谢。我已经看到使用概述的 ini_set 方法工作了几天,但我又一次回到了“允许的内存大小为 52428800 字节已用尽”的错误。正如我最初的帖子中提到的那样,我有一个 phpinfo 脚本,并且 CORE memory_limit 肯定设置得很高 - 我的 .htaccess 中有相同的数字。我也可以说,上面提到的 phpinfo 表明已经安装了 Suhosin。现在让我感到困惑的是“52428800 字节”值,我不知道该归属于何处。这可能与 memcached 直接相关吗?去苏霍辛?
    • 如果有帮助,我注意到我当前的 suhosin.memory_limit 设置为 0
    猜你喜欢
    • 2013-01-05
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2015-11-23
    • 2015-08-02
    相关资源
    最近更新 更多