增加嵌套函数调用限制

PHP 中有一个非常糟糕的限制: 如果您调用调用 a2()的函数 a1() ,那么该函数将调用 a3... 所以当 a99()调用 a100()时,您将看到

致命错误: 最大功能嵌套级别达到’100’,中止!

有没有办法将100个嵌套调用的限制增加到500或10000个?

这对我来说至关重要,因为我正在开发一个具有大量回调的基于事件的系统。

111968 次浏览

是否安装了 Zend、 IonCube 或 xDebug?如果是这样,那么您可能就是从那里得到这个错误的。

几年前我遇到过这种情况,最后是 Zend 把这个限制放在了那里,而不是 PHP。当然,删除它会让您超过100次迭代,但是您最终将达到内存限制。

此错误消息来自 XDebug 扩展插件。PHP 本身没有函数嵌套限制。在 php.ini 中更改 场景:

xdebug.max_nesting_level = 200

或者在 PHP 代码中:

ini_set('xdebug.max_nesting_level', 200);

至于你是否真的需要改变它(例如: 如果有一个递归函数的替代解决方案) ,没有代码我无法判断。

就我个人而言,我认为这是一个错误,而不是一个需要调整的设置。在我的代码中,这是因为我的一个控制器中有一个与库同名的类,这个类似乎出了问题。

输出错误,并查看触发此错误的位置。