已达到最大函数嵌套级别“100”,升级到 Laravel 5.1 后中止
Maximum function nesting level of '100' reached, aborting after upgrading to Laravel 5.1
升级到 Laravel 5.1 后,我在 Laravel 应用程序中收到此错误消息。
FatalErrorException in Dispatcher.php line 200:
Maximum function nesting level of '100' reached, aborting!
此问题出现在我的应用程序的某些网址上。我已经做了几十次 composer update
但问题仍然存在。任何建议都将不胜感激
问题是由默认值 xdebug.max_nesting_level
引起的,即 100。
目前的解决方法是将 xdebug.max_nesting_level
增加到某个水平,比如 200 或 300 或 400
我通过将 xdebug.max_nesting_level 增加到 120 来修复我的,方法是将下面的行添加到 Laravel 5.1
中的 bootstrap/autoload.php
ini_set('xdebug.max_nesting_level', 120);
.........
define('LARAVEL_START', microtime(true));
问题是由于 Apache 中的 1 PHP 扩展造成的- php_xdebug
所以,解决方案是-
- 禁用扩展程序
- 增加扩展的嵌套层级
- 在 laravel
中增加 max_nesting_level
详细
选项 1-
要禁用它,您可以按照this。
如果您使用的是 WAMP Server,那么您可以前往 php.ini-
然后提交这个-
zend_extension = "c:/WAMP/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
- PC 之间的路径应该不同
- 在注释行前加#
选项 2-
您可以通过this方式增加限制。
如果您正在使用 WAMP Server,那么您可以通过 php.ini-
轻松完成
而zend_extension = "c:/WAMP/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
之后应该是这样的-
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/WAMP/tmp"
xdebug.show_local_vars=0
然后,只需在此处添加 1 行-
xdebug.max_nesting_level=500
选项 3-
您也可以在 Laravel autoload.php 文件中设置此配置。
您可以简单地在文件中添加这一行(文件中的任何位置)-
ini_set('xdebug.max_nesting_level', 500);
你就完成了:)
此问题是由于启用了 xdebug 扩展,
要解决此问题,您必须禁用 xdebug 扩展或编辑 php.ini 文件并将 xdebug.max_nesting_level 更改为 200(因为默认情况下此参数不包含在 php.ini 并且必须添加它 )
喜欢:
xdebug.max_nesting_level=200
升级到 Laravel 5.1 后,我在 Laravel 应用程序中收到此错误消息。
FatalErrorException in Dispatcher.php line 200:
Maximum function nesting level of '100' reached, aborting!
此问题出现在我的应用程序的某些网址上。我已经做了几十次 composer update
但问题仍然存在。任何建议都将不胜感激
问题是由默认值 xdebug.max_nesting_level
引起的,即 100。
目前的解决方法是将 xdebug.max_nesting_level
增加到某个水平,比如 200 或 300 或 400
我通过将 xdebug.max_nesting_level 增加到 120 来修复我的,方法是将下面的行添加到 Laravel 5.1
中的bootstrap/autoload.php
ini_set('xdebug.max_nesting_level', 120);
.........
define('LARAVEL_START', microtime(true));
问题是由于 Apache 中的 1 PHP 扩展造成的- php_xdebug
所以,解决方案是-
- 禁用扩展程序
- 增加扩展的嵌套层级
- 在 laravel 中增加
max_nesting_level
详细
选项 1-
要禁用它,您可以按照this。
如果您使用的是 WAMP Server,那么您可以前往 php.ini-
然后提交这个-
zend_extension = "c:/WAMP/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
- PC 之间的路径应该不同
- 在注释行前加#
选项 2-
您可以通过this方式增加限制。
如果您正在使用 WAMP Server,那么您可以通过 php.ini-
轻松完成而zend_extension = "c:/WAMP/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll"
之后应该是这样的-
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/WAMP/tmp"
xdebug.show_local_vars=0
然后,只需在此处添加 1 行-
xdebug.max_nesting_level=500
选项 3-
您也可以在 Laravel autoload.php 文件中设置此配置。
您可以简单地在文件中添加这一行(文件中的任何位置)-
ini_set('xdebug.max_nesting_level', 500);
你就完成了:)
此问题是由于启用了 xdebug 扩展, 要解决此问题,您必须禁用 xdebug 扩展或编辑 php.ini 文件并将 xdebug.max_nesting_level 更改为 200(因为默认情况下此参数不包含在 php.ini 并且必须添加它 )
喜欢:
xdebug.max_nesting_level=200