【问题标题】:Laravel 5.2, Maximum function nesting levelLaravel 5.2,最大函数嵌套级别
【发布时间】:2016-08-03 10:14:52
【问题描述】:

请帮我看看发生了什么。 我刚刚建立了一个基本的 Laravel 项目。这是一个全新的 Laravel 项目(5.2.29)

这是 route.php

Route::get('/', 'TestController@index');

这是测试控制器

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

home.blade.php 是全新 Laravel 安装附带的,打印“Laravel 5”的那个。

当我添加'web'中间件时,如下

Route::group(['middleware' => ['web']], function () {
    Route::get('/', 'TestController@index');
});

我收到此错误:“已达到 '100' 的最大函数嵌套级别,正在中止!”。 我读了一些关于 xDebug 的帖子,所以我将此行添加到 xdebug.ini

xdebug.max_nesting_level = 1000

但没有任何改变。

有什么帮助吗?或者关于我还能检查什么的任何建议? 谢谢

【问题讨论】:

  • 进行撰写更新,看看是否有效。
  • 更改后是否重启了网络服务器? (apache、nginx 等)

标签: php laravel laravel-5 laravel-5.2 laravel-routing


【解决方案1】:

尝试删除web 中间件,因为现在它会自动应用于所有路由。因此,从 v5.2.27 开始,您无需应用 web 中间件来避免错误。

【讨论】:

  • 好的,这就是问题所在。我的框架版本是 5.2.29,所以默认应用“web”中间件。万分感谢。无论如何,这对我来说真的很令人惊讶。通过次要版本进行如此大的更新将导致我的应用程序崩溃。如果我在生产中使用此应用程序并运行升级会怎样?也许这是题外话,机器人你如何面对这个?您是否经常运行框架升级或跳过升级来避免这些问题?或者:你如何跟上小版本之间的每一个变化?在 Laravel 网站上,我只能找到主要版本的更新日志。
  • 当你询问更新 Laravel 时,如果你已经有相当大的应用程序,我建议不要更新它。 Laravel 开发人员多次破坏向后兼容性(例如,Symfony 开发人员不这样做)。我知道一个非常大的网站仍然使用非常非常旧的 phpbb2 版本,开发人员出于同样的原因不会更新。
  • 谢谢。 ) 很高兴它有帮助。
【解决方案2】:

如果您安装了新应用程序(安装时为 5.2.27),则不必使用 web 中间件组,因为它会自动应用,但是如果您安装了 5.2.27 之前的版本,然后更新到 5.2.27 或更高版本你仍然需要使用它。

所以首先您需要验证app/Providers/RouteServiceProvider.php 是否自动应用了网络中间件组。如果是,则应将其从 routes.php 中删除,因为您可能会遇到意外行为。

如果不是这样,您应该验证web中间件组中包含哪些中间件,因为其中一些可能会导致问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多