增加嵌套函数调用限制
在PHP中有一个非常糟糕的限制:如果你调用一个函数a1()调用a2(),那么调用a3 …所以当a99()
将调用a100()
你会看到
致命错误:达到“100”的最大function嵌套级别,正在中止!
有没有办法将100个嵌套电话的限制增加到500或10000?
这对我来说很重要,因为我正在开发一个有很多callback的基于事件的系统。
此错误消息来自XDebug扩展特别。 PHP本身没有函数的嵌套限制。 更改您的php.ini中的设置 :
xdebug.max_nesting_level = 200
或者在你的PHP代码中:
ini_set('xdebug.max_nesting_level', 200);
至于如果你真的需要改变它(即:如果有一个recursion函数的替代解决scheme),我不能没有代码。
您是否安装了Zend,IonCube或xDebug? 如果是这样,那可能是你从这个错误中得到的。
几年前,我遇到了这个问题,最终Zend把这个限制放在那里,而不是PHP。 当然,删除它可以让你通过100次迭代,但是最终会达到内存限制。
如果您使用的是XDebug(例如XAMPP),您可以通过将其添加到php.ini
文件(我build议放在文件的底部)来设置嵌套级别:
[XDebug] zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ; Other settings if needed xdebug.max_nesting_level = 500
这将设置为500的限制,但如果需要可以更多。 只链接到XDebug文件php_xdebug.dll
我个人build议这是一个错误,而不是一个需要调整的设置。 在我的代码中,这是因为我有一个类与我的控制器中的一个库具有相同的名称,并且似乎将它绊倒了。
输出错误,看看这是触发的地方。
- 有没有办法在Zend Framework 1.5中执行“INSERT … ON DUPLICATE KEY UDPATE”?
- Laravel – 对所有路由使用(:any?)通配符?
- PHP:计数一个stdClass对象
- 如何修复“添加myBundle到asseticBundleconfiguration”symfony2exception?
- 我们如何在PHP中添加两个date间隔
- 在PHP中有Java HashMap吗?
- Laravel,使用雄辩得到最后插入id
- 无法使用cURL连接到HTTPS站点。 返回0长度的内容。 我能做什么?
- mysqli_select_db()期望参数1是mysqli,给出的string