我是新来拉拉维尔的。我试图打开http://localhost/test/public/
,我得到了
异常处理程序出错。
我搜索了一下,并使用chmod-r777 app/storage
更改了存储目录的权限,但没有效果。
我更改了app.php
中的debug=>true
,并访问了该页面,在异常处理程序中获得了错误:
无法打开流或文件“/var/www/html/test/app/storage/logs/laravel.log”:打开流失败:拒绝/var/www/html/test/bootstrap/compiled.php中的权限:8423
然后,我使用命令chmod-r644 app/storage
更改了存储目录的权限,“异常处理程序中的错误”错误消失了,并加载了一个页面。但在那里我得到了这个:
file_put_contents(/var/www/html/laravel/app/storage/meta/services.json):无法打开流:权限被拒绝
vsmoraes的建议对我有用:
Laravel>=5.4
php artisan cache:clear
chmod -R 775 storage/
composer dump-autoload
Laravel<;5.4
php artisan cache:clear
chmod -R 775 app/storage
composer dump-autoload
注意:不要在任何远程服务器(开发或生产)上执行此操作
当我问这个问题时,这是我的本地主机上的一个问题,在一个虚拟机中运行。所以我认为建立一个777是足够安全的,然而,人们是正确的,当他们说你应该寻找一个不同的解决方案。请先尝试775
对于使用Laravel 5一直面临这个问题的谷歌人来说。
这是由于不同的用户试图以不同的权限写入storage/logs
文件夹中的同一日志文件而引起的权限问题。
发生的情况是,您的laravel配置可能被设置为每天记录错误,因此您的Web服务器(Apache/NGINX)可能会在默认用户下创建此文件,这取决于您的环境它可能是类似于OSX上的_www
或*NIX系统上的www-data
之类的东西,那么当您可能运行了一些artisan命令并得到一些错误时,问题就来了,因此artisan将使用不同的用户编写此文件,因为终端上的PHP是由不同的用户实际上是您的登录用户执行的,您可以通过运行此命令来检查它:
php -i | grep USER
如果您的登录用户创建了该日志文件,您的Web服务器将无法在其中写入错误,反之亦然,因为laravel在默认情况下使用655
权限写入日志文件,这只允许所有者在其中写入。
要修复这个临时问题,您必须手动将664
组的权限授予该文件,以便您的登录用户和Web服务器用户都可以写入该日志文件。
为了永久避免这个问题,您可能需要在storage/logs
目录中创建新文件时设置适当的权限,方法是继承目录中的权限。这个答案https://unix.stackexchange.com/a/115632可以帮助您解决这个问题。
不应授予777权限。这是个安全隐患。对于Ubuntu用户,在Laravel5中,我建议递归地更改目录存储的所有者:
请尝试以下操作:
sudo chown -R www-data:www-data storage
在基于Ubuntu的系统中,www-data是apache用户。