Container.php第741行中的ReflectionException:类视图不存在


ReflectionException in Container.php line 741: Class view does not exist

我正在与Homestead合作一个Laravel 5.1项目。我闯入我的Vagrant机器,运行Composer Update命令,试图更新我的项目,现在我得到了以下错误:

    1. in Container.php line 741
    2. at ReflectionClass->__construct('view') in Container.php line 741
    3. at Container->build('view', array()) in Container.php line 631
    4. at Container->make('view', array()) in Application.php line 674
    5. at Application->make('Illuminate'Contracts'View'Factory') in Container.php line 842
    6. at Container->resolveClass(object(ReflectionParameter)) in Container.php line 805
    7. at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 776
    8. at Container->build('Illuminate'View'Middleware'ShareErrorsFromSession', array()) in Container.php line 631
    9. at Container->make('Illuminate'View'Middleware'ShareErrorsFromSession', array()) in /home/vagrant/Sites/laravel-basics/vendor/laravel/framework/src/Illuminate/Foundation/Application.php line 674
   10. at Application->make('Illuminate'View'Middleware'ShareErrorsFromSession') in Pipeline.php line 123
   11. at Pipeline->Illuminate'Pipeline'{closure}(object(Request)) in StartSession.php line 62
   12. at StartSession->handle(object(Request), object(Closure))
   13. at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   14. at Pipeline->Illuminate'Pipeline'{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
   15. at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
   16. at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   17. at Pipeline->Illuminate'Pipeline'{closure}(object(Request)) in EncryptCookies.php line 59
   18. at EncryptCookies->handle(object(Request), object(Closure))
   19. at call_user_func_array(array(object(EncryptCookies), 'handle'),  array(object(Request), object(Closure))) in Pipeline.php line 124
   20. at Pipeline->Illuminate'Pipeline'{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
   21. at CheckForMaintenanceMode->handle(object(Request), object(Closure))
   22. at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
   23. at Pipeline->Illuminate'Pipeline'{closure}(object(Request))
   24. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
   25. at Pipeline->then(object(Closure)) in Kernel.php line 122
   26. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
   27. at Kernel->handle(object(Request)) in index.php line 54

我不确定是什么坏了。我已经在Laravel 5.1中工作了,Composer运行得很好。我觉得我有两个基本的选择:1)尝试恢复到Composer的前一版本,或者2)恢复到我项目的前一个版本。然而,有没有更简单的解决方案?

我已经两次遇到这个错误消息了,所以我把解决方案放在这里,以防将来需要在谷歌上搜索。

有时会出现此错误,因为"/bootstrap/cache"目录不可写。因此,它无法编译视图。解决方案是对该目录进行chmod,以便将其写入

沃伊拉。不客气,Future Me。

确保Illuminate''View''ViewServiceProvider已列在config/app.php文件中的提供程序列表中。

显然,容器中没有视图服务,而这正是设置它所提供的。

供我将来参考:

发生这种情况有几个原因。最常见的

  • bootstrap/cache不可写
  • 缺少config/view.php或此文件存在语法错误
  • 试用composer dumpautoload -o
  • config/app.phpViewServiceProviderView上,别名不得注释掉

在artisan中,您可能看不到确切的错误。如果是,请转到错误行,并转储堆栈跟踪。在这种情况下,文件将是Illuminate/Container/Container.php的第741行(或屏幕上显示的行)。用dd($e)转储原始异常,并查看错误从哪里开始。

在我的案例中,文件的名称不正确。该类被声明为:

class NoSessionAccessMiddleware {

但文件名为NoSessionAccess.php,我只是将文件重命名为NoSessionAccessMiddleware.php,它就解决了这个问题。

遇到同样的问题,我尝试了上述解决方案,但没有成功。在运行composer dump自动加载后,我发现这是因为我忘记安装我在开发服务器上安装的一个包(Laravel Excel),而这个包还没有加载到生产服务器上。

我在更新项目名称空间后遇到了同样的问题。我不得不更新composer.json文件:

 "psr-4": {
        "App''": "myforms/app/"
    } 

至:

 "psr-4": {
        "App''": "app/"
    }

在服务器上的源目录中,运行composer update,然后运行composer dump-autoload

当'bootstrap'文件夹及其内容的权限不正确时,也可能发生这种情况。对我来说,chmodding到可写修复了它。