Laravel 5.5:无法打开laravel.log:权限被拒绝

时间:2018-04-04 14:49:29

标签: laravel amazon-web-services permissions elastic-beanstalk

我正在尝试在我的Elastic Beanstalk实例上运行一个简单的Laravel命令行:php artisan queue:work

但我一直收到以下错误:

  

在StreamHandler.php第107行:

     

流或文件“/var/app/current/storage/logs/laravel.log”可以   不能打开:无法打开流:权限被拒绝

我已经尝试了我可以在SO上找到的每个解决方案(除了chmod -R 777建议,似乎无处不在这个问题)。

我尝试删除现有的laravel.log,然后使用touch创建一个新的,然后确保webapp是所有者。

我也试过了:

sudo chmod -R 755 /var/app/current/storage/
sudo chown -R webapp /var/app/current/storage/

当我列出日志目录时,一切看起来都应该如此:

-rwxr-xr-x 1 webapp webapp     0 Apr  4 14:38 laravel.log

存储目录也很好看:

drwxr-xr-x  6 webapp webapp   4096 Apr  3 19:33 storage

但我仍然遇到上述错误!任何人都可以解释原因(不只是提供解决方案)。

谢谢

3 个答案:

答案 0 :(得分:2)

所以简单的答案就是我以ec2-user运行命令。作为解决方案,我可以:

  1. 将laravel.log的所有权更改为ec2-user
  2. 以所有者身份运行命令(例如sudo -u webapp php artisan queue:work
  3. 使用sudo su切换到root,看看它在部署期间的运行方式(即root
  4. 没有什么特别错的。

答案 1 :(得分:1)

因此,当您通过ssh登录EBS实例时,您已以ec2-user身份登录。

我不相信ec2-userwebapp群组的一部分。

尝试在ec2-user

下的Laravel项目根目录中创建一个ebextension,将.ebextensions/ec2user.config添加到webapp组
users:
  ec2-user:
    groups:
      - webapp

答案 2 :(得分:0)

通过使用命令关闭selinux来证明这是问题所在

sudo setenforce 0

这应该允许进行写操作,但是您已在服务器范围内关闭了添加的安全性。那很糟。退回SELinux

sudo setenforce 1

然后最终使用SELinux通过此命令允许写入文件

sudo chcon -R -t httpd_sys_rw_content_t storage

然后您就离开了!