2016-04-12 113 views
1

請幫助我找到正在發生的事情。 我剛剛建立了一個基本的Laravel項目。這是一個新的新鮮Laravel項目(5.2.29)Laravel 5.2,最大功能嵌套級別

這是route.php

Route::get('/', '[email protected]'); 

這是測試控制器

class TestController extends Controller 
{ 
    public function index() 
    { 
     return view('home'); 
    } 
} 

的home.blade.php件事是屬於一個用新鮮的Laravel裝置,印刷「Laravel 5」。

當我加入「網絡」中間件,如下

Route::group(['middleware' => ['web']], function() { 
    Route::get('/', '[email protected]'); 
}); 

我得到這個錯誤:「達到‘100’最大功能嵌套層次,中止」。 我瞭解的Xdebug一些線索,所以我加入這一行xdebug.ini

xdebug.max_nesting_level = 1000 

,但什麼都沒有改變。

任何幫助?或者我還有什麼建議可以檢查? 謝謝

+0

不要譜寫更新,看看是否可行。 –

+2

您是否在更改後重新啓動網絡服務器? (apache,nginx等) –

回答

3

嘗試刪除web中間件,因爲現在它自動應用於所有路由。因此,從v5.2.27開始,您不需要應用web中間件來避免錯誤。

+0

好的,就是這個問題。我的框架版本是5.2.29,所以默認應用「web」中間件。萬分感謝。無論如何,這對我來說真的很令人驚訝。通過次要版本進行的這種重大更新將導致我的應用程序中斷。如果我在生產中使用此應用程序並進行升級,該怎麼辦? 也許它是不重要的,bot你怎麼面對這個?您是否經常運行框架升級或跳過升級以避免這些問題? 或者其他:你如何跟上次要版本之間的每一次變化?在Laravel網站上,我只能找到主要版本的更新日誌。 – user2029958

+0

當你問及更新Laravel時,如果你已經有很大的應用程序,我建議不要更新它。 Laravel開發人員多次破壞了向後兼容性(例如Symfony開發人員不這麼做)。我知道一個真正非常龐大的網站,它仍然使用真的很老的phpbb2版本,開發人員不會因爲同樣的原因而進行更新。 –

+0

對不起阿列克謝,剛剛讀了第一個,因爲它顯示在頂部.. – user2029958

2

如果您安裝了新的應用程序(在安裝時爲5.2.27),則不必使用web中間件組,因爲它將自動應用,但是如果您安裝了5.2.27之前的版本,然後更新了到5.2.27或更高版本,您仍然需要使用它。

因此,首先您需要驗證app/Providers/RouteServiceProvider.php是否有自動應用的網絡中間件組。如果是的話,你應該從routes.php中刪除它,因爲你可能會意外的行爲。

如果不是的話,你應該檢查什麼中間件被納入web中間件組,因爲他們中的一些可能導致問題

相關問題