【问题标题】:CakePHP Nesting level errorCakePHP 嵌套级别错误
【发布时间】:2012-01-13 17:06:29
【问题描述】:

我在 Cakephp 中遇到问题。因为它在本地运行良好。这是错误

致命错误:达到“100”的最大函数嵌套级别, 中止!在 /var/www/tanuki/cake/libs/folder.php 第 261 行

您也可以查看此链接for more information

请告诉我是什么问题

【问题讨论】:

  • 显示相关代码,而不是链接。 :-)
  • @CodeCaster: 没有用于 show 的代码,因为它在本地运行良好
  • 您知道该主机上是否安装了 XDebug 吗?我还发现了一个与有限函数嵌套相关的问题:stackoverflow.com/questions/4293775/…。接受的答案指出 XDebug(PHP 的调试扩展)可能会限制函​​数的嵌套,并且 PHP 本身没有这样的限制。代码总是有用的,即使它在本地运行良好。 ;)
  • @user900553 它在本地工作而不是在您的网络服务器上运行并没有说太多,除了它的测试很差。您的服务器上可能存在触发此错误的情况,而本地开发计算机上不存在此错误。它可以是各种各样的东西,从文件夹(不存在)到配置差异。问题出在哪里取决于您,我们无法为您做到这一点。您遇到的错误是一种症状,而不是根源。
  • @CodeCaster: $this->Room->recursive = 0; $this->set('房间', $this->paginate());这是一个代码。我不认为你可以在这段代码中找到错误:)

标签: php cakephp


【解决方案1】:

某些东西会导致递归,而您的目标是找出它是什么。 最简单的方法是调试...在第 261 行的 /var/www/tanuki/cake/libs/folder.php 中设置断点,运行脚本,并在遇到断点时分析调用堆栈是否存在异常情况。

另一方面,递归可能是由内部错误引起的。您可以使用 AppController 类上的 appError() 方法覆盖系统和自定义错误处理程序:

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

这将提示您缺少哪些部分(例如,文件或组件的类、元素等)导致递归。

【讨论】:

    【解决方案2】:

    此错误仅表示您的调用堆栈已达到 100 项的最大数量,不会再继续。这不是真正的问题。

    确保您的调试设置在您的 config/core.php 中设置为 0,并检查您的网络服务器的 error_log 是否存在可能导致此问题的任何潜在问题。

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 2011-07-03
      相关资源
      最近更新 更多