Laravel 5.5:无法打开Laravel.log:权限被拒绝
我试图在我的Elastic Beanstalk实例上运行一个简单的Laravel命令行:Laravel 5.5:无法打开Laravel.log:权限被拒绝,laravel,amazon-web-services,permissions,amazon-elastic-beanstalk,Laravel,Amazon Web Services,Permissions,Amazon Elastic Beanstalk,我试图在我的Elastic Beanstalk实例上运行一个简单的Laravel命令行:php artisan队列:work 但我一直得到以下错误: 在StreamHandler.php第107行中: 无法创建流或文件“/var/app/current/storage/logs/laravel.log” 无法打开:无法打开流:权限被拒绝 我已经尝试了我能找到的所有解决方案(除了chmod-R 777建议,它似乎到处都在跟踪这个问题) 我已尝试删除现有的laravel.log,然后使用touch创
php artisan队列:work
但我一直得到以下错误:
在StreamHandler.php第107行中:
无法创建流或文件“/var/app/current/storage/logs/laravel.log”
无法打开:无法打开流:权限被拒绝
我已经尝试了我能找到的所有解决方案(除了chmod-R 777
建议,它似乎到处都在跟踪这个问题)
我已尝试删除现有的laravel.log
,然后使用touch
创建一个新的,然后确保webapp
是所有者
我也试过:
sudo chmod -R 755 /var/app/current/storage/
sudo chown -R webapp /var/app/current/storage/
当我列出logs目录时,所有内容都与我认为的一样:
-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
但我还是得到了上面的错误!谁能解释一下原因(而不仅仅是给出一个解决方案)
谢谢当您通过ssh登录到EBS实例时,您是以
ec2用户的身份登录的
我不相信ec2用户
是真正执行PHP&apache/nginx的webapp
组的一部分
通过在.ebextensions/ec2user.config下的Laravel项目根目录中创建一个ebextension,尝试将您的ec2用户添加到webapp组
users:
ec2-user:
groups:
- webapp
当您通过ssh登录到EBS实例时,您将以ec2用户的身份登录
我不相信ec2用户
是真正执行PHP&apache/nginx的webapp
组的一部分
通过在.ebextensions/ec2user.config下的Laravel项目根目录中创建一个ebextension,尝试将您的ec2用户添加到webapp组
users:
ec2-user:
groups:
- webapp
因此,简单的答案是,我是以ec2用户的身份运行命令的。作为解决方案,我可以:
将laravel.log的所有权更改为ec2用户
以所有者身份运行该命令(例如,sudo-u webapp php artisan queue:work
)
使用sudo su
切换到root,查看它在部署期间如何运行(即作为root
)
没有什么特别的错误。所以简单的答案是,我是作为ec2用户运行命令的。作为解决方案,我可以:
将laravel.log的所有权更改为ec2用户
以所有者身份运行该命令(例如,sudo-u webapp php artisan queue:work
)
使用sudo su
切换到root,查看它在部署期间如何运行(即作为root
)
没有什么特别错误。通过使用命令关闭selinux来证明这是问题所在
sudo setenforce 0
这应该允许写入,但您已经关闭了服务器范围的附加安全性。那太糟糕了。将SELinux转回
sudo setenforce 1
然后最后使用SELinux允许使用此命令写入文件
sudo chcon -R -t httpd_sys_rw_content_t storage
你走了 通过使用命令关闭selinux来证明这是问题所在
sudo setenforce 0
这应该允许写入,但您已经关闭了服务器范围的附加安全性。那太糟糕了。将SELinux转回
sudo setenforce 1
然后最后使用SELinux允许使用此命令写入文件
sudo chcon -R -t httpd_sys_rw_content_t storage
你走了 您的工作人员以什么用户身份运行?请尝试运行sudo-uwebapp php artisan queue:work
@apokryfos Ah。这是有道理的。我对服务器端有点不适应。奇怪的是,它似乎工作没有错误。。。但实际上它也没有处理队列。但是,队列是否得到处理实际上取决于很多原因。例如,我无法让队列工作者处理默认队列,我始终必须明确指定它需要处理的队列。你的工作者以什么用户身份运行?尝试运行sudo-u webapp php artisan queue:work
@apokryfos Ah。这是有道理的。我对服务器端有点不适应。奇怪的是,它似乎工作没有错误。。。但实际上它也没有处理队列。但是,队列是否得到处理实际上取决于很多原因。例如,我永远无法让队列工作者处理默认队列,我总是必须明确指定它需要处理的队列。