Достигнут максимальный уровень гнездования функции "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