事实上,我是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项目在/var/www/html/目录下。转到这个目录。

cd /var/www/html/

然后修改存储/和引导/缓存/目录的权限。

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

如果权限775不生效,请尝试设置权限777。(警告!这是最宽松的许可,小心使用)。

sudo chmod -R 777 storage/
sudo chmod -R 777 bootstrap/cache/

cPanel:如果你在cPanel上,没有终端可用,你可以通过右键单击提到的目录和它的子目录来更改权限。

其他回答

不要将目录设置为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)'

最大的人建议更改文件权限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

在Linux中

sudo chown -R www-data:root /var/www/name-project-Laravel
sudo chmod 755 /var/www/name-project-Laravel/storage

需要调整存储和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的

添加到composer.json

"scripts": {
    "post-install-cmd": [
          "chgrp -R www-data storage bootstrap/cache",
          "chmod -R ug+rwx storage bootstrap/cache"
     ]
}

安装composer后