【发布时间】:2015-08-02 10:55:49
【问题描述】:
我有 Ubuntu 和 Laravel 5 框架,我在浏览器中看到白屏。
当我更改storage/logs 目录权限时,它会有所帮助,但由于“每日”日志配置,我必须每天都这样做。
【问题讨论】:
我有 Ubuntu 和 Laravel 5 框架,我在浏览器中看到白屏。
当我更改storage/logs 目录权限时,它会有所帮助,但由于“每日”日志配置,我必须每天都这样做。
【问题讨论】:
简答:
sudo chmod -R 777 vendor storageecho "umask 000" | sudo tee -a /etc/resolv.confsudo service apache2 restart
广泛回答:
当您在 Apache 服务器上启动 Laravel 5 框架并默认启用“每日”选项来创建日志文件时,有时您会面临由于文件权限而禁止写入日志文件的情况。
通常,当您拥有 php 项目时,所有文件都属于 www-data 用户,您当前的用户无需写入日志文件。
关于 Laravel,两个不同的进程需要写入您的日志文件:
1) Apache 服务器(用户www-data)当您在浏览器中执行某些操作时;
2) 在命令行中执行php artisan something 时的Php 进程(您的用户)。
当然,每次你想使用artisan的时候都可以执行sudo -u www-data php artisan your_command(就像建议的here一样),但是有点烦。
首先,您需要授予 Apache 用户对供应商和存储目录的权限。
最简单的方法(但不是最好的方法)是执行:
sudo chmod -R 777 vendor storage
现在,让我们看看在这两种情况下创建日志文件时会发生什么。
如果最初的日志文件 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
就是这样。
请注意,由于可能存在安全风险,此解决方案仅适用于开发环境。
【讨论】:
出于明显的安全原因,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,但您可能希望将其替换为正确的组。
【讨论】:
存储文件夹的 chmod 775 也可以考虑用户
属于网络服务器组。
使用 -R 非常危险,因为对于文件,执行权限根本不需要。
chmod 664 用于存储内的文件。 chmod 775 里面的文件夹
【讨论】:
我遇到了同样的错误。通过使用以下命令,我可以解决它。出于某种原因,这与日志文件无关。
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
【讨论】:
在config/login.php中,设置了检查权限:
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
'permission' => octdec('0666'),
],
【讨论】: