事实上,我是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存储根本没有帮助。
您可能已经知道,这个问题是由于没有对日志文件夹(存储的子文件夹)的写权限引起的。
要解决这个问题,需要经过以下一系列步骤
更新的作曲家
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命令的更多信息,请检查这个
我不太想把我的文件夹权限改为777。下面是我解决这个问题的方法。
首先,我改变了在我的本地机器上运行web服务器的用户(我运行nginx,但原则适用于任何地方):
$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload
之后,我在public/文件夹下创建了另一个index.php文件,以找出谁在运行我的php-fpm版本,以及我将在哪里更改它:
<?php
phpinfo();
?>
重新加载页面后,我发现www-data是用户(在环境部分下)。我还发现我运行的是php 7.1。我开始更改用户:
$> sudo vim /etc/php/7.0/fpm/pool.d/www.conf
#Look for www-data or the following variables: user, group, listen.user, listen.group.
最后,我给文件夹的权限如下:
sudo chmod -R 775 ./storage/
现在,我确保我是文件夹的所有者通过使用简单的:
ls -al
如果您将服务器和php-fpm用户设置为自己,并且文件夹由root拥有,那么您将继续遇到这个问题。如果您将sudo laravel new <project>作为根目录,就会发生这种情况。在这种情况下,请确保在项目上使用递归chown命令更改user:group设置。在大多数默认情况下,www-data是服务器和php的主要设置,在这种情况下,要确保文件夹不在www-data的范围内。
我的项目安装在我的主目录下。Ubuntu 16.04和Laravel 5.5。