PHPには非常に悪い制限が1つあります。a2()を呼び出すa1()、a3 ...を呼び出す関数a1()を呼び出すと、a99()
がa100()
を呼び出すときに表示されます
致命的なエラー:関数のネストレベルが最大「100」に達しました。中止します!
100のネスト呼び出しの制限を500または10000に増やす方法はありますか?
これは私にとって非常に重要です。なぜなら、多くのコールバックを備えたイベントベースのシステムを開発しているからです。
このエラーメッセージは、特にXDebug拡張機能から発生します。 PHP自体には、関数のネスト制限はありません。 php.iniで 設定 を変更します。
xdebug.max_nesting_level = 200
またはPHPコードで:
ini_set('xdebug.max_nesting_level', 200);
あなたが本当にそれを変更する必要があるかどうか(つまり、再帰関数の代替ソリューションがある場合)については、コードなしではわかりません。
Zend、IonCube、またはxDebugがインストールされていますか?もしそうなら、それはおそらくあなたがこのエラーを得ているところです。
数年前にこれに遭遇しましたが、最終的にはZendがPHPではなくその制限を設けました。もちろん、これを削除すると、100回の繰り返しを超えることができますが、最終的にはメモリ制限に達します。
個人的には、調整が必要な設定とは対照的に、これはエラーであることをお勧めします。私のコードでは、コントローラの1つにライブラリと同じ名前のクラスがあり、それをトリップするように見えたためです。
エラーを出力し、これがトリガーされている場所を確認します。