Uncaught ReflectionException: Class log does not exist Laravel 5.2

5 浏览
0 Comments

Uncaught ReflectionException: Class log does not exist Laravel 5.2

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

Uncaught ReflectionException: Class log does not exist

我在Centos 7上运行Laravel 5.2。

我看到了以下内容的参考:

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

我已经:

  • example.env替换了我的.env,以避免任何自定义配置错误。
  • 删除并重新克隆了仓库。
  • 我使用了Laravel默认的composer.json,看看是否有所不同。

以上方法都没有给我带来任何快乐。我在另一台机器上也有相同的环境,应用程序正常工作。唯一的区别是那台机器(工作正常)不是从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

非常感谢您的帮助。提前感谢。

0
0 Comments

在Laravel 5.2中,出现"Uncaught ReflectionException: Class log does not exist"的错误通常是由于.env配置文件中的值有空格导致的。比如,在.env文件中,如果某个值有空格,就会出现这个错误。例如,下面的配置是允许的:

DB_USERNAME=homestead

但是下面的配置是不允许的:

DB_USERNAME=home stead

如果配置值中有空格,可以将该值用引号括起来,例如:

DB_USERNAME="home stead"

实际上,很多人都希望.env配置文件使用JSON格式,这样可以更方便地处理值中的空格等问题,或许我们应该向Laravel开发团队提出这个改进建议。

感谢提供这个答案。对于问题提问者来说,可能空格并不是引起问题的原因,但对于我来说,空格的确是导致问题的原因。这个答案让我避免了一个看起来会很漫长的无意义的追踪过程。

0
0 Comments

Laravel 5.2出现了一个名为"Uncaught ReflectionException: Class log does not exist"的异常。这个异常是由于Laravel尝试记录错误信息时无法实例化Laravel的Log类所导致的。这并不是因为Log类丢失或隐藏了,而是因为Laravel仍在进行启动过程并且尚未加载Log类。因此,当Laravel的启动过程中发生错误时,它尝试抛出一个异常,但无法抛出异常,因为Log类尚未加载。这就是为什么会出现ReflectionException的原因。

在我的情况下,我没有安装php-mysql扩展,导致Laravel在启动过程中出错。由于错误信息非常误导,因此很难调试出问题所在。

要解决此错误并找出实际导致问题的缺失扩展/组件,可以参考Johnson的回答。

对于这个异常,Laravel以前的版本会在启动过程中默默地丢弃问题并继续进行,因此你的应用程序仍然会出错,但你不会收到Log类异常。

解决此问题的方法是安装缺失的php-mysql扩展。在我的情况下,缺失的扩展是'php70w-mysql'。

如果遇到此错误,可以检查并安装所需的扩展和组件,可以参考laravel.com/docs/5.2(服务器要求)中列出的要求或其他由包要求的要求。

一些其他用户提到,他们在移动类到另一个文件夹时忘记更新命名空间,导致出现此错误。

此错误在artisan命令中发生,每当加载框架时出现异常。在某些情况下,可能是由于删除了一个包,但其依赖仍在使用,导致出现此错误。

0
0 Comments

在Laravel 5.2中出现(Uncaught ReflectionException: Class log does not exist Laravel 5.2)这个问题的原因是在配置文件(config/)中引用了一个使用Facade的方法,而该方法在配置文件中无法正常使用。解决方法是在log类后面添加以下代码:

class config extends \Illuminate\Log\Writer { 		
function __construct() 		
{ 			
    $this->monolog = new Monolog("local"); 		
}  	
public function get($test, $test2) 	
{ 			
    return $test; 		
} 	
} 
}

同时,可以添加以下代码$this->monolog->pushHandler(new \Monolog\Handler\StreamHandler('/tmp/log.txt'));来实际记录日志,以便查找问题的原因。另外,还有一些其他原因也会导致这个问题的出现,比如在配置文件中定义了一个闭包并且后续运行了php artisan config:cache命令。解决这种情况的方法是不要在Laravel的配置文件中定义闭包。

总结起来,解决(Uncaught ReflectionException: Class log does not exist Laravel 5.2)这个问题的方法包括在log类后面添加config类的代码,添加日志记录代码以查找问题原因,以及避免在配置文件中定义闭包。同时,还需要注意composer.lock文件的同步性,避免出现依赖包未安装的情况。

0