Laravel在ElasticBeanstalk上的"日志文件权限被拒绝"错误不断出现,即使在.ebextensions配置文件中设置了权限



我正在将Laravel应用程序部署到ElasticBeanstalk环境中。但是我对laravel.log文件权限有问题。

我使用";eb部署";命令部署后,我访问我的应用程序。但它抛出了以下错误。

The stream or file "/var/app/current/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

为了解决这个问题,我用ssh连接到服务器并运行以下命令。

sudo -u root chmod 777 -R /var/app/current/storage/logs

问题解决了。现在我的应用程序正在运行。但是我再次部署我的应用程序;被部署";命令部署后,问题再次出现。以一致的方式解决问题。我尝试在.eextensions配置文件中运行命令,如下所示。

container_commands:
01-migrations:
command: "php artisan migrate --force"
02-log-storage-permissions:
command: "sudo -u root chmod -R 777 /var/app/current/storage/logs/"

我可以部署我的应用程序。但这个问题仍然存在。命令似乎不起作用。我的配置有什么问题,我该如何修复?

我相信这是因为container_commands在应用程序位于暂存文件夹中时运行。因此,在运行02-log-storage-permissions之后,您的/var/app/current无论如何都将替换为暂存文件夹。所以你的chmod不会持续。

要纠正此问题,您可以尝试两个选项之一

  1. 使用
02-log-storage-permissions:
command: "sudo -u chmod -R 777 ./storage/logs/"

以更改暂存文件夹中的日志。

  1. 使用postdeploy钩子运行脚本:

之后,弹性Beanstalk平台引擎部署应用程序和代理服务器。

最新更新