事实上,我是laravel的新手,我正在尝试创建我的第一个项目。出于某种原因,我一直得到这个错误(我甚至还没有开始编码)

Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423

我读到这与权限有关,但chmod -R 775存储根本没有帮助。


当前回答

永远不要在你的服务器上使用777,但在你自己的机器上,有时我们需要做更多的775,因为

chmod -R 775 storage

意味着

7 - Owner can write
7 - Group can write
5 - Others cannot write!

如果你的服务器不是作为Vagrant运行,它将无法写入,所以你有两个选择:

chmod -R 777 storage

或者将组改为您的webserver用户,假设它是www-data:

chown -R vagrant:www-data storage

其他回答

这是我在运行Apache时所做的:

sudo chown -R $USER:www-data my_laravel_project/

sudo chmod -R 775 my_laravel_project/storage

sudo chmod -R 775 my_laravel_project/bootstrap/cache

cd my_laravel_project

php artisan optimize:clear

对于所有在Laravel环境下的Centos 7用户,不需要禁用Selinux,只需要运行这些命令:

yum install policycoreutils-python -y # might not be necessary, try the below first

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache

restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules

最后,确保您的主机、ip和虚拟主机都正确用于远程访问。

Selinux的目的是限制对根用户的访问,所以只有必要的东西可以访问,至少从一般的概述来看,它是额外的安全,禁用它不是一个好的实践,有许多学习Selinux的链接,但在这种情况下甚至不需要它。

在我的特殊情况下,我有一个配置文件生成并缓存到bootstrap/cache/目录,所以我的步骤如下:

删除所有生成的缓存文件:rm bootstrap/cache/*.php 创建一个新的laravelv .log文件,并使用以下方法更新该文件的权限: chmod -R 775存储

需要调整存储和bootstrap/cache的权限。

cd到你的Laravel项目。 sudo chmod -R 755存储 sudo chmod -R 755 bootstrap/cache

如果755不行,你可以试试777。777可不安全!

根据您的web服务器的设置方式,您可以更具体地设置您的权限,并仅将它们授予您的web服务器用户。谷歌WEB SERVER NAME Laravel文件权限以获取更多信息。

在撰写本文时,这是针对Laravel 5.4的

只需在项目根目录-中运行以下命令

sudo chmod -R 775 storage
sudo chown -R $USER:www-data storage