Достигнут максимальный уровень гнездования функции "100", прерванный после обновления до Laravel 5.1
Я получаю это сообщение об ошибке в своем приложении Laravel после того, как я обновился до Laravel 5.1.
FatalErrorException in Dispatcher.php line 200:
Maximum function nesting level of '100' reached, aborting!
![enter image description here]()
Эта проблема возникает в некоторых URL-адресах моего приложения. Я сделал несколько десятков composer update
, но проблема все еще сохраняется. Любое предложение вообще будет оценено
Ответы
Ответ 1
Проблема вызвана по умолчанию xdebug.max_nesting_level
, которая равна 100.
Обходной путь на данный момент состоит в том, чтобы увеличить xdebug.max_nesting_level
до определенного уровня, скажем 200 или 300 или 400
Я исправил мой, увеличив xdebug.max_nesting_level до 120, добавив строку ниже bootstrap/autoload.php
в Laravel 5.1
ini_set('xdebug.max_nesting_level', 120);
.........
define('LARAVEL_START', microtime(true));
Ответ 2
Проблема возникает из-за 1 расширения PHP в Apache- php_xdebug
Итак, решение -
- Отключить расширение
- Увеличить уровень вложенности расширения
- Увеличение
max_nesting_level
в laravel
Подробнее
Вариант 1 -
Чтобы отключить его, вы можете следовать этому.
Если вы используете 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"
- Путь должен отличаться от ПК на ПК.
- Добавление # перед строкой - комментарий
Вариант 2 -
Вы можете увеличить лимит .
Если вы используете 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);
И вы сделаете:)
Ответ 3
Эта проблема связана с тем, что расширение xdebug включено,
Чтобы исправить это, вам нужно отключить расширение xdebug или отредактировать файл php.ini и изменить xdebug.max_nesting_level на 200 (поскольку по умолчанию этот параметр не включен в php.ini и должен его добавить)
like:
xdebug.max_nesting_level = 200