2016-01-24 185 views
25

我目前正在尝试从github克隆我的现有项目。Uncaught ReflectionException:类日志不存在Laravel 5.2

Uncaught ReflectionException: Class log does not exist

我在CentOS 7

我已经看到引用运行Laravel 5.2:

  • 去掉空格克隆后,我收到以下错误的过程中运行composer install.env文件中。
  • 删除供应商目录&重新安装
  • 去除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

我也和我一样看这个答案,因为我我有一个类似的问题。我在laravel 5.1.28上,最近在一段时间内首次完成了作曲家更新,从那时起,我在heroku上获得了制作到生产的错误。我已经回滚了我所做的composer.json修改,但是怀疑没有改变;这是与所有更新拉到供应商: –

+0

@DianeKaplan我已经发布了一个答案让你投下你的眼睛,它帮助我追踪我的错误... – jakehallas

+0

谢谢,@jakehallas!我' m使用postgres-你碰巧知道是否有类似的扩展我需要,还是足够具体,我的问题可能是别的?我是一个总新手,所以像这样的问题是远离我的舒适区:/ –

回答

34

好的,经过数小时的挖掘,我找到了我的问题的解决方案。我说我的问题的原因是因为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在启动过程中中断。

最终,调试由于错误导致的错误可能会导致错误,这是非常困难的。

我希望这可以帮助别人!

+1

是的,这是Laravel的沉默行为...我有这个问题,在我的情况下,我不得不安装php-mbstring和php-xml扩展。所以基本上如果我看到这个错误,我检查并安装这里需要的扩展:https://laravel.com/do cs/5.2(服务器要求)或其他(如果软件包要求)。 –

+0

你是怎么解决这个问题的? – fabian

+2

我安装了缺少的php软件包'php-mysql' – jakehallas

20

在你.ENV文件请确保您有例如这是允许的

DB_USERNAME=homestead 

这不是不允许

DB_USERNAME=home stead 

你可以包装值值

没有空格如果你有空格,请用引号引起来。

DB_USERNAME="home stead" 

真的希望他们使用JSON的.ENV文件,也许我们应该要求功能

+0

感谢您的回答。空间可能不会引起问题提问者的问题,但它确实导致了我的问题。这个答案使我看起来没有什么看起来像是一场漫长的鹅追逐。 –

1

我在CLI中键入CMD并意外地在应用程序配置文件键入它。为了找到问题,我必须遵循这个程序。

解决方案,如何找到问题:

  • 使config文件夹的备份副本。尝试删除一个配置
  • 时间,并尝试运行失败的作曲家/艺术家命令。当你
  • 查找失败的文件 - 搜索可能失败的行。
  • 失败的原因是:您使用的类常量未加载
  • 呢。您使用尚未加载的类/函数。等

https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=2

3

我注意到添加几行我.ENV文件后,相同的行为。不允许有空格时没有引号,所以这可以是固定的,如:

APP_YOUR_NAME="A value with some spaces"

1

在我的情况下,PDO扩展的缺失是问题。安装完成后,问题就解决了。

12

底层误差是通过修改vendor/laravel/framework/src/Illuminate/Container/Container.php和放置在顶部以下揭示:(感谢https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist/replies/160902此想法)

<?php 

namespace { 
    use Monolog\Logger as Monolog; 
    class log extends Illuminate\Log\Writer { 
     function __construct() 
     { 
      $this->monolog = new Monolog("local"); 
     } 
    } 
} 

//Add curly-braces around the original content, like so: 

namespace Illuminate\Container { 
    //All original code in this file goes here. 

    //... 
} 

要添加到的根原因的列表这个消息在配置文件中定义了一个闭包,随后调用php artisan config:cache会导致这种情况(至少在Laravel 5.1中)。此表现的解决方案:不要在Laravel配置文件中定义关闭,每个https://github.com/laravel/framework/issues/9625

+1

这回顾了引发的真正异常 - 这是我试图使用在配置文件(config /)中使用Facade的方法。 – king

+0

这有帮助,但并没有解决整个问题。我也得到了错误的配置类是缺少,帮助日志类后添加此: 在线'类配置扩展\照亮\登录\ {作家 \t \t功能__construct() \t \t { \t \t \t $这个 - >独白=新的Monolog(“本地”); \t \t} \t公共职能的get($测试,$ TEST2) \t { \t \t \t返回$测试; \t \t} \t} }' – Jadro007

+0

添加一行'$这 - > monolog-> pushHandler(新\独白\处理程序\ StreamHandler中( '/ TMP/log.txt的')); '实际上写一个日志,它可以揭示原因 – Alex

0

此问题通常是由.env文件中的单词之间的空格造成的。 确保如果您有类似

SITE_DESCRIPTION = Social Network for dogs 

SITE_DESCRIPTION = 'Social Network for dogs' 
1

编辑::

取代它因为我是不满意的,而笨拙的调试和返工路径,为了让虚拟机运行顺利,我反思了这个过程并重新安装了流浪盒laravel/homestead(virtualbox 1.0.1

对我来说该问题可能源于config/app.php中缺失的逗号。缺少的逗号可能会停止编译过程并吐出Uncaught ReflectionException: Class log does not exist错误。


这不是一个直接的答案,但更多的导柱用于那些谁冒险进入这个深渊无记载错误

系统:MacOS的塞拉利昂

流浪:1.9.1(最新版本写作的时间)

VM:laravel /宅基地(virtualbox 0.4.0

laravel版本:5.1.*

PHP:7.0.*


反复尝试后解决该问题,其中包括:

  1. 改写,删除.ENV潜在的解析问题
  2. php7.1和mcrypt的/ mbstring问题
  3. 安装作曲家建议的套餐
  4. 更新宅基地。RB
  5. PATH相关的问题

重要的是,(对我来说)它似乎是在最初的VirtualBox的版本设置:

vagrant box add laravel/homestead

而是试图提供的版本号,如下所示:

vagrant box add laravel/homestead--box-version 0.4.0


其它

我试图与以下laravel/homestead VirtualBox的版本失败:

  • 1.0.1(默认)

laravel/homestead-7

  • 0.2.1
0

以我为例,我曾使用过一个配置文件中route()方法。显然,这种方法不起作用,因为这些文件不使用Illuminate Helper,它们很简单.php与数据。

在实例化Log类之前读取配置文件,这会导致Jakehallas解释得很好的错误。

3

删除文件bootstrap/cache/config.php。该文件可能不会显示在窗口上,如果是这样,请使用双指令器。 Definitelly将工作!

编辑:

它可以通过缓存.ENV文件,如果这是你的情况下,尽量去除 bootstrap/cache/config.php

+0

您节省了我的时间,谢谢 –

0

引起另外这是由于语法错误一些文件conf /目录.env文件。 在我的情况下,我得到了这个错误,因为我忘记把::class添加到服务提供者和门面,到数组提供者和声明在conf/app.php文件中。我纠正了这个错误消失了。

0
Uncaught ReflectionException: Class log does not exist 

这个错误出现laravel 5.2 &>版本:

我的错误是:

TIPS1: 时,你缺失(;)在配置文件中的代码的结束

其他语法错误此错误发生。

我的错误代码:

<?php 
return [ 
'data' => [ 
    'common' => [ 
     'AuthKey1' => "17086...........9a87a1", 
     'AuthKey2' => "17086...........9a87a1", 
     'AuthKey3' => "17043...........59969531", 
    ], 
] 
] 

正确的代码:失踪(;)返回数组的结束

<?php 
return [ 
'data' => [ 
    'common' => [ 
     'AuthKey1' => "17086...........9a87a1", 
     'AuthKey2' => "17086...........9a87a1", 
     'AuthKey3' => "17043...........59969531", 
    ], 
] 
]; 
0

是由@jakehallas说。它与异常中显示的内容无关。

其实如果有任何dababase问题或其他配置varilables问题导致此。

其实当我试图改变database.php中的某些东西时,我只复制了与database-copy.php相同的文件。我没有解决这个问题。

通过我只是删除该数据库文件copy.php其工作正常,之前我做了什么走后..

谢谢...

相关问题