laravel清理缓存(config:clear)后导致程序崩溃
前情提要:导致这个错误的可能性有很多,如此不人性化的提示是因为在config:clear后laravel重载出错,然后尝试从log输出错误,但是错误先于创建log文件被产生,导致程序崩溃了且没有log文件可以输出错误,所以才输出这个报错。还有许多诸如env文件配置错误可能会导致这个提示。
报错:
PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php:734
Stack trace:
#0 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php(734): ReflectionClass->__construct('log')
#1 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php(629): Illuminate\Container\Container->build('log', Array)
#2 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(697): Illuminate\Container\Container->make('log', Array)
#3 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php(849): Illuminate\Foundation\Application->make('log')
#4 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php(804): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php(774): Illuminate\Container\Co in /opt/project/xxx/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 734
答案: 删除bootstrap文件下的config.php文件,再全局查找确定没有使用到Closure的命令,有就自己想办法去掉。并且再也不用如下命令: bug artisan config : crash
解答:出现这个问题的可能有很多,可能会有很多小伙伴跟我一下做了以下步骤,前提是你真的有我这么老的laravel版本,这个没有序列化闭包已经在新版本被解决了
↓↓
php aritsan route:cache
php artisan cache:clear
php artisan config:clear
清缓存三件套,导致程序崩溃的是config:clear,原因是laravel5.1+没有将闭包序列化,如果你的某个导入包使用了Closure命令,恭喜你会中招(ctrl+shift+f 找这个命令,看看哪个混蛋是罪魁祸首,我那时候先一步删除vender去reinstall了,知道答案再找就找不着了)。我真的是想一锤子锤死开发组。这个问题既没有准确提示,又发生的突然,谁能想到老子清缓存还能把程序清炸了。真的是谷歌 stackoverflow github翻烂了才找到这个答案。一下午都在座位上怀疑人生……
找到答案的那个帖子
https://github.com/laravel/framework/issues/9625
所以说,感觉英语才是决定程序员上限的地方呢。。。