Laravel 报错: Declaration of XXX

在另一台机器上拉取最新代码后,进入网站后台,发现页面空白,使用 php artisan cache:clear, php artisan clear-compiled 等清除缓存和编译文件后还是不行,打开 PHP 错误日志查看,发现报错:

Fatal error: Declaration of Illuminate\\Auth\\SessionGuard::basic() must be compatible with that of Illuminate\\Contracts\\Auth\\SupportsBasicAuth::basic() in /usr/share/nginx/html/tanteng.me/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 17

在网上找到一个可行的解决办法,修改 composer.json 文件:

laravel-composer-json-post-install

将 clear-compiled 替换,具体修改如下:

再次执行 sudo composer update 之后,再执行一次 sudo composer dump-autoload 就恢复正常了。

顺便我们来看看这两个方法,文件路径 laravel/framework/src/Illuminate/Foundation/ComposerScripts.php:

这两个方法都是清除 Laravel 的编译文件,以后可以使用这两个方法作为 composer.json 中安装和更新依赖的脚本命令。


SegmentFault讲堂开讲了:本次课程主要围绕 PHP 面试和笔试中经常会出现的一些知识点,但是面试官会在笔试题基础上深入扩展,那么你知道如何更好的回答让面试官满意吗?题目收集自腾讯,迅雷,美图等公司的笔试面试题,以及本人面试经历中印象中的知识点,同时也分享一些面试的经验,相信对你一定有很大的参考价值。点击前往

打赏