【问题标题】:CakePHP Allowed Memory Size ErrorCakePHP 允许的内存大小错误
【发布时间】:2014-11-03 15:44:30
【问题描述】:

我正在使用 CakePHP 2.3 访问 CakePHP 网站时出现此错误:

PHP 致命错误:第 246 行 C:\inetpub\wwwroot\mysite\lib\Cake\Event\CakeEventManager.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 4386075 字节)

这似乎不是一个循环,看起来像是与会话相关的东西,因为它在尝试使用 $this->Session->read('Auth.User.isAdmin') 读取会话变量后失败。

在此之前,我可以毫无问题地打印和die()


更新:

PHP 致命错误:第 246 行 C:\inetpub\wwwroot\tlm\lib\Cake\Event\CakeEventManager.php 中允许的内存大小为 536870912 字节已用尽(尝试分配 12273327 字节)

更新 2

设置限制为1500M后

PHP 致命错误:第 926 行 C:\inetpub\wwwroot\tlm\lib\Cake\View\View.php 中的内存不足(已分配 1307312128)(试图分配 23778447 字节) PHP 致命错误:第 116 行的 C:\inetpub\wwwroot\tlm\lib\Cake\Error\ErrorHandler.php 中超过 30 秒的最大执行时间

更新 3

我使用的是 PHP 5.5.6。通过替换 lib 文件夹更新到 CakePHP 2.6 后,我多次收到相同的错误,并且在相同错误的 30 行之后,我得到了内存。

PHP 严格标准:只能通过引用在第 33 行的 C:\inetpub\wwwroot\tlm\app\Plugin\Combinator\View\Helper\CombinatorHelper.php 中分配变量

PHP 严格标准:仅...

PHP 严格标准:仅...

PHP 致命错误:第 958 行 C:\inetpub\wwwroot\tlm\lib\Cake\View\View.php 中允许的内存大小为 134217728 字节已用尽(试图分配 3704512 字节)

PHP 严格标准:只能通过引用在第 33 行的 C:\inetpub\wwwroot\tlm\app\Plugin\Combinator\View\Helper\CombinatorHelper.php 中分配变量

PHP 严格标准:仅...

PHP 严格标准:仅...

【问题讨论】:

  • 这不是 cakephp 特有的问题,你可能有一个无限循环或类似的东西正在消耗你所有的内存。
  • 更新到当前的 master 分支版本,现在也打印致命错误的堆栈跟踪 (github.com/cakephp/cakephp/pull/5053)。并以这种方式对其进行调试,以获得有关发生情况的更多信息。
  • @mark 从 2.3 版更改为当前的 2.6 版我担心由于 cakePHP 的内部变化,有些东西会停止工作。
  • @Alvaro ,至少你可以在开发实例上尝试 2.6
  • @jQueryAngryBird 更新到 2.6。我用最新的错误更新了我的问题。

标签: php cakephp cakephp-2.3


【解决方案1】:

在这种情况下,将这个方法临时放在 AppController 中会有所帮助:

public function appError($method, $messages) {
    die('Application error: called handler method ' . $method);
}

这通常会提示我在哪里进一步查看。

【讨论】:

    【解决方案2】:

    编辑 php.ini 并将memory_limit 设置为比当前设置更大。

    点赞memory_limit = 512M

    更新

    增加 max_execution_time

    【讨论】:

    • 这个问题以前没有发生过。为什么要现在呢?
    • 你好,你永远不知道什么时候内存消耗少,什么时候消耗更多好吗?
    • 更新问题。 512 仍然出现错误。
    • wat 是旧设定值吗?
    • 再次使用 1512M 更新问题。 (旧值为128M)
    【解决方案3】:

    在遇到类似错误后,看起来问题存在于 CakeSession.php 第 489 行:

    throw new CakeSessionException(sprintf(
        __d('cake_dev', 'Unable to configure the session, setting %s failed.'),
        $setting
    ));
    

    这似乎导致了无限循环,退出这里将停止它。我不知道这究竟为什么会导致循环,但它这样做的原因是因为 CakePHP 无法使用 ini_set 设置一些 php.ini 变量。如果此时您打印出$setting$value,您将能够看到问题变量是什么。对我来说是session.auto_start,它是在这个文件的_defaultConfig 函数中设置的。我注释掉了设置这为我解决问题的行。

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误,这有助于:
      我只是将控制器文件中的$this->set('votingBookings') 更改为$this->set('bookings')。希望对任何人都有帮助。爱如此,并想贡献我的 2 美分。干杯:D

      【讨论】:

        猜你喜欢
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2015-04-22
        • 2023-03-20
        • 2015-09-18
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多