增加嵌套函数调用限制

2022-08-30 07:02:23

PHP中有一个非常糟糕的限制:如果你调用某个调用a2()的函数a1(),那么调用a3...所以什么时候会打电话你会看到a99()a100()

致命错误:已达到最大函数嵌套级别“100”,正在中止!

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

这对我来说至关重要,因为我正在开发一个基于事件的系统,其中包含很多回调。


答案 1

此错误消息专门来自 XDebug 扩展。PHP本身没有函数嵌套限制。更改 php 中的设置.ini:

xdebug.max_nesting_level = 200

或在您的 PHP 代码中:

ini_set('xdebug.max_nesting_level', 200);

至于你是否真的需要改变它(即:如果有递归函数的替代解决方案),如果没有代码,我就无法分辨。


答案 2

您是否安装了Zend,IonCube或xDebug?如果是这样,那可能是您从哪里得到此错误。

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


推荐