Достигнут максимальный уровень гнездования функции «100», прерванный после обновления до Laravel 5.1

Я получаю это сообщение об ошибке в моем приложении Laravel после того, как я обновился до Laravel 5.1.

FatalErrorException in Dispatcher.php line 200: Maximum function nesting level of '100' reached, aborting! 

введите описание изображения здесь

Эта проблема возникает в некоторых URL-адресах моего приложения. Я сделал множество composer update для composer update но проблема все еще сохраняется. Любое предложение вообще будет оценено

Проблема вызвана по умолчанию 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));

Проблема возникает из-за 1 расширения PHP в Apache- php_xdebug

Таким образом, решение –

  1. Отключить расширение
  2. Увеличить уровень вложенности расширения
  3. Увеличение 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); 

И вы закончите 🙂

Эта проблема объясняется тем, что расширение xdebug включено, чтобы исправить это, либо вам нужно отключить расширение xdebug, либо изменить файл php.ini и изменить xdebug.max_nesting_level на 200 (поскольку по умолчанию этот параметр не включен в php.ini и должен добавить Это )

как :

xdebug.max_nesting_level = 200