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

问题描述 投票:0回答:3

我正在尝试在我的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

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

谢谢

laravel amazon-web-services permissions elastic-beanstalk
3个回答
2
投票

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

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

没有什么特别错的。


1
投票

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

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

尝试通过在ec2-user下的Laravel项目的根目录中创建一个ebextension,将.ebextensions/ec2user.config添加到webapp组

users:
  ec2-user:
    groups:
      - webapp

0
投票

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

sudo setenforce 0

这应该允许写入,但是你已经关闭了服务器范围内增加的安全性。那很糟。转回SELinux

sudo setenforce 1

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

sudo chcon -R -t httpd_sys_rw_content_t storage

你要走了!

© www.soinside.com 2019 - 2024. All rights reserved.