事实上,我是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存储根本没有帮助。


当前回答

这个解决方案是针对laravel 5.5的

你必须改变几个文件夹的权限: chmod -R -777 storage/logs . sh chmod -R -777 storage/framework 对于上面的文件夹,775或765不适合我的项目

chmod -R 775 bootstrap/cache 

此外,项目文件夹的所有权应该如下(当前用户):(web服务器用户)

其他回答

对于所有在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的链接,但在这种情况下甚至不需要它。

最大的人建议更改文件权限777或775,我认为这不是一个合适的方法来解决这个问题。您只需要更改存储和引导文件夹的所有权。

在下面的图片中,你可以看到我所有的文件/文件夹都在根用户下(除了存储和引导,因为我改变了所有权),但我是以管理员身份登录的(在改变所有权之前),这就是为什么它总是给予拒绝权限的原因。所以我需要把这两个文件夹的所有权改为管理员

我是怎么做的呢, 转到项目目录并运行以下命令。 sudo chown -R yourusername:www-data storage sudo chmod -R ug+w storage, sudo chown -R yourusername:www-data bootstrap, sudo chmod -R ug+w bootstrap

不要将目录设置为777。您应该更改目录所有权。因此,将您当前登录的用户设置为所有者,并将web服务器用户(www-data, apache,…)设置为组。 你可以试试这个:

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

然后设置目录权限试试这个:

chmod -R 775 storage
chmod -R 775 bootstrap/cache

更新:

web服务器用户和组取决于您的web服务器和操作系统。要找出您的web服务器用户和组,请使用以下命令。nginx使用:

PS AUX|Grip nginx|grip -v grip

对于apache使用:

Ps aux | egrep '(apache|httpd)'

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

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

如果使用cmd

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

如果你使用GUI

首先进入项目,右键单击存储,检查属性,然后进入Permissions选项卡

使用下面的代码更改权限

sudo chmod -R 777 storage

那么您的文件属性可能是

然后检查你的设置,并执行laravel命令,它将工作:)