我在本地OSX机器上设置了Laravel宅基地,一切似乎都顺利进行,直到我尝试打开example.app:8000并出现此错误:
Error in exception handler: The stream or file "/home/vagrant/Code/example/app/storage/logs/laravel.log" could not be opened: failed to open stream: Protocol error in /home/vagrant/Code/example/bootstrap/compiled.php:8671
我跟随Laravel文件和Laracast关于建立宅基地,所以我不确定是什么原因引起的。我可以看到/home/vagrant/Code/example/app/storage/logs/laravel.log
不存在,但我认为这应该是自动创建的?
答案 0 :(得分:44)
您{group>数据(网络服
异常处理程序出错:流或文件" laravel / app / storage / logs / laravel.log"无法打开:无法打开流:laravel / vendor / monolog / monolog / src / Monolog / Handler / StreamHandler.php中的权限被拒绝:77
如果您在访问网站时在浏览器中收到此错误(或类似错误),则论坛app/storage
无法写入www-data
。如果在执行某些app/storage
命令时出现此错误,则您(用户)无法写入php artisan
。因此,您和www-data组都必须具有写入权限。
确保文件和文件夹具有正确的权限:
转到Laravel安装的根目录(app/storage
和composer.json
住在哪里)。
更改拥有的用户和组,其中artisan
是您的用户名:
yourusername
以递归方式(sudo chown -R yourusername:www-data app/storage
)将用户:组所有者设置为-R
以后的所有文件和文件夹中的yourusername:www-data
。
为您和app/storage
组添加写入权限:
www-data
以递归方式(sudo chmod -R ug+w app/storage
)将写入标记(-R
)添加到用户(+
)和组(w
)中(u
)拥有g
以后的文件和文件夹。
此外,有些人建议您可能需要刷新应用程序缓存。
app/storage
最后,您可能想要重新生成Composer的自动加载文件。
php artisan cache:clear
答案 1 :(得分:4)
至于我,我已使用chmod -R 777 storage
更改了我的存储空间权限,并且运行良好。
我已在here检查了此配置。
答案 2 :(得分:3)
您需要运行以下某项:
sudo chmod -R 644 app/storage
sudo chmod -R 755 app/storage
答案 3 :(得分:2)
如果按照其他答案中的说明更改文件权限并不起作用,并且您使用的是CentOS 7或RHEL,则问题可能是名为selinux的安全程序。在注意到{36 {3}}
的用户3670777回答之前,我在处理各种权限和群组时遇到了困难希望这有助于其他人。
答案 4 :(得分:2)
您可以按照以下步骤
执行此操作chmod -R 775 storage
表示
7 - Owner can write
7 - Group can write
5 - Others cannot write!
如果您的网络服务器没有以Vagrant身份运行,它将无法写入,因此您有2个选项:
chmod -R 777 storage
或将该组更改为您的网络服务器用户,假设它是www-data:
chown -R vagrant:www-data storage
答案 5 :(得分:-1)
如果All Above建议无效,请停用selinux并重试
答案 6 :(得分:-2)
我在laravel上很新。也许我无法深入解释它,但是该命令解决了我的问题。
chmod -R 777 storage/