我在分支上测试没有问题,合入master后,发现有冲突,于是把冲突解决了。
但是运行php artisan命令时候却报错:Uncaught ReflectionException: Class log does not exist in vendor\laravel\framewte\Container\Container.php
刚开始以为是bootstrap/cache/compiled.php文件有问题,于是把它删除,可是问题还是没有解决。
google之,很多人反馈说是.env文件的问题,说里面的值有空格的时候,必须要用双引号引起来。可我发现.env文件并没有值含有空格。
网上论坛分析
也有的说是config下面的配置文件问题,如StackOverflow上的:
StackOverflow问答
可我找了下,也没有发现这个app.php有什么问题。
转念一想,也许是别的config下的文件影响,于是想到这次合的代码里有config下的文件,果然找到了一个文件config/qcloud.php, 部分代码如下:
'tool' => [
'base_uri' => 'xxxx',
'caller' => 'xxxx',
'secret_key' => 'xxx',
] // 就是这里少了 一个,号,但是并没有报语法错误
'shorturl' => [
'create_url' => env('SHORT_URL_CREATE', 'xxx'),
'query_url' => env('SHORT_URL_QUERY', 'xxx'),
],
原来是合并代码的时候,这里合出了问题,少了一个英文逗号(,),加上逗号后,代码正常跑起来了!
奇怪的是,这里其实是语法错误了,但是并没有报出来,而是报class log not exists,不知道这是不是laravel的bug,我的使用版本是Laravel 5.1.46
后面有空再研究下这里框架启动加载配置文件的逻辑吧