我有Ubuntu和Laravel 5框架,我在浏览器中看到白屏
当我更改storage/logs
目录权限时,它会有所帮助,但由于“每日”日志配置,我必须每天都这样做。
答案 0 :(得分:6)
出于明显的安全原因,storage
和vendor
文件夹的权限应保留在775
。
但是,您的计算机和服务器Apache都需要能够在这些文件夹中写入。例如:当您运行php artisan
之类的命令时,您的计算机需要在storage
中的日志文件中写入。
您需要做的就是将文件夹的所有权归给Apache:
sudo chown www-data:www-data /path/to/your/project/vendor
sudo chown www-data:www-data /path/to/your/project/storage
然后,您需要将您的计算机(由username
引用)添加到服务器Apache所属的组。像这样:
sudo usermod -a -G www-data userName
最常见的是,groupName
为www-data
,但您可能希望将其替换为正确的群组。
答案 1 :(得分:2)
chmod 775对于存储文件夹很好,考虑到用户也是 属于Web服务器组。
使用-R非常危险,因为对于文件,根本不需要执行权限。
chmod 664用于存储内的文件。 chmod 775用于文件夹
答案 2 :(得分:1)
我遇到了同样的错误。通过使用以下命令,我可以解决它。由于某种原因,它与日志文件无关。
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
答案 3 :(得分:-2)
简答:
sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
sudo service apache2 restart
广泛回答:
当您在Apache服务器上启动Laravel 5框架时,默认情况下启用'daily'选项来创建日志文件,有时您会因为文件权限而禁止写入日志文件。
通常,当您拥有php项目时,所有文件都属于www-data
用户,并且您当前的用户无需写入日志文件。
关于Laravel,需要将两个不同的进程写入您的日志文件:
1)当您在浏览器中执行某些操作时,Apache服务器(用户www-data
);
2)在命令行中执行php artisan something
时的Php进程(您的用户)。
当然,每次你想要使用工匠时,你都可以执行sudo -u www-data php artisan your_command(如建议的here),但这有点烦人。
首先,您需要为Apache用户授予供应商和存储目录的权限。
最简单的方法(但不是最好的方式)是执行:
sudo chmod -R 777 vendor storage
现在,让我们看看在两种情况下logfile创建时会发生什么。
如果最初通过引发的错误创建了logfile storage/logs/laravel-2015-mm-dd.log
php artisan something
命令(案例2),日志文件将具有
`-rw-rw-r-- your_user:your_user`
权限。
如果它是由您的apache服务器创建的(案例1),它在www-data
用户下启动,权限将如下所示:
-rw-r-r-- www-data:www-data
所以,我的建议是通过apache更改新创建文件的许可
我们将行umask 000
添加到/etc/resolv.conf
文件。
echo "umask 000" | sudo tee -a /etc/resolv.conf
现在,
sudo service apache2 restart
就是这样。
请注意,由于存在可能的安全风险,此解决方案仅适用于仅限开发环境。