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


当前回答

执行以下命令,可以在starting of command时添加sudo,具体操作取决于系统:

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

其他回答

永远不要在你的服务器上使用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

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

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

chmod -R 775 bootstrap/cache 

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

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

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

如果使用cmd

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

如果你使用GUI

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

使用下面的代码更改权限

sudo chmod -R 777 storage

那么您的文件属性可能是

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

您可能已经知道,这个问题是由于没有对日志文件夹(存储的子文件夹)的写权限引起的。

要解决这个问题,需要经过以下一系列步骤

更新的作曲家

 sudo composer self-update

修改存储文件夹写权限

 sudo chmod -R ugo+rw storage

现在存储文件夹应该有权限drwxrwxrwx

从项目根运行以下命令检查权限

ls -l 

同样,如果您在上述步骤后遇到以下错误

 ErrorException chdir(): No such file or directory (errno 2)

只需在项目根文件夹中使用创建一个名为public的文件夹

sudo mkdir public

关于chmod命令的更多信息,请检查这个