Laravel 5.6 未捕获的 RuntimeException:尚未设置外观根。在 vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218

Laravel 5.6 Uncaught RuntimeException: A facade root has not been set. in vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218

使用 Composer 在 PHP 7.1.8 (fedora 23) 上安装 Laravel 5.6 后,当我尝试在浏览器中打开 url 时,出现此错误

PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. in vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218\nStack trace:  
\n#0 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(396): Illuminate\Support\Facades\Facade::__callStatic('replaceNamespac...', Array)  
\n#1 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(373): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths()  
\n#2 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(288): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\Exception\HttpException))  
\n#3 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(187): Illuminate\Foundation\Exceptions\Handler->prepareResponse(Object(Illuminate\Http\Request), Object(Symfony\Co in vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 218

我已经使用 composer 安装了 Laravel,并且安装时没有出现错误。所有目录都有足够的权限(我刚刚授予 apache 对官方 Laravel 安装指南指定的目录的写权限。)

我应该怎么做才能解决这个错误?

经过多次尝试后,我意识到这是由于 SELinux 在我的系统中生效造成的问题。 SELinux 阻止 apache 写入所需的文件。

$ /usr/sbin/getenforce
Enforcing

我禁用了 SELinux 来证实这个疑问,并且在禁用 SELinux 后它可以正常工作。所以我只需要为我的项目设置适当的权限,这样 SELinux 就可以允许 apache 写入必要的文件。

$sudo chcon -t httpd_sys_rw_content_t /path/to/my/laravel/project/dir -R

我希望这对面临同样问题的人有所帮助。