一尘不染

未捕获的ReflectionException:类日志不存在Laravel 5.2

php

我目前正在尝试从github克隆我现有的项目。在克隆composer install过程中运行之后,我收到以下错误:

Uncaught ReflectionException: Class log does not exist

我在Centos 7上运行Laravel 5.2

我看到过以下引用:

  • 删除.env文件中的空格。
  • 删除供应商目录并重新安装
  • 删除composer.json中所需的某些软件包

我有:

  • 将替换.env为,example.env以避免任何自定义配置错误。
  • 我已删除并重新克隆了仓库。
  • 我已经使用composer.jsonLaravel附带的默认值来查看是否有所作为。

以上这些都没有给我带来任何快乐。我还在另一台计算机上设置了相同的环境,应用程序正常运行。唯一的区别是未从git克隆机器(运行中的机器),而是最初的构建环境。

我收到的堆栈跟踪:

PHP Fatal error:  Uncaught ReflectionException: Class log does not exist in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php:736
    Stack trace:
    #0 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(736): ReflectionClass->__construct('log')
    #1 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('log', Array)
    #2 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('log', Array)
    #3 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(845): Illuminate\Foundation\Application->make('log')
    #4 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(800): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
    #5 /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php(769): Illuminate\Container\Container->getDependenc in /var/www/html/Acme/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 736

任何帮助将非常感激。提前致谢。


阅读 408

收藏
2020-05-29

共1个答案

一尘不染

好的,经过数小时的挖掘,已经找到了解决 我问题的方法 。我说我的问题的原因是因为Exception误导性很强。

Uncaught ReflectionException: Class log does not exist

此异常仅表示Laravel尝试记录错误,但无法实例化Laravel的Log类。这不是由于Log类走动或隐藏。这是因为Laravel仍在进行引导过程,并且尚未加载Log该类。

因此,引发此异常是因为在Laravel的启动周期中发生了错误-发生此错误时,它试图引发异常-
但由于Log尚未加载该类,因此它无法引发异常。因此,我们得到一个ReflectionException

在所有版本的Laravel中都发生了 这种 情况, 我们看到laravel
5.1中抛出异常的唯一原因是<=,因为以前Laravel默默地放弃了该问题并通过启动过程继续进行-基本上,您的应用仍会崩溃,但是您不会收到的Log class exception

在我的特殊情况下,我没有php-mysql安装扩展程序,导致Laravel在启动过程中中断。

最终,由于错误的误导性,很难调试可能做错的事情。

我希望这可以帮助别人!

2020-05-29