AWS EB上的Symfony-清除缓存后无法在缓存目录中写入

问题描述 投票:1回答:1

我正在将Symfony 4.4应用程序部署到AWS ElasticBeanstalk,并注意到每次部署后并未清除缓存。

尽管该应用运行良好,但过时的缓存有所例外。

为了解决缓存问题,我添加了以下文件:

/。ebextensions / deploy.config

container_commands:
    01-clear-cache:
        command: php bin/console cache:clear --no-warmup --env=prod

这似乎清除了缓存,但随后却以某种方式更改了权限,这样当我尝试访问该应用程序时,我会收到错误消息。

致命错误:未捕获RuntimeException:无法写入缓存目录(/ var / app / current / var / cache / prod)

为什么运行cache:clear会更改权限,并且有什么方法可以避免这种情况的发生,或者至少如何在以后解决,即在同一.ebextensions文件中?

php symfony amazon-elastic-beanstalk symfony4 symfony-cache
1个回答
0
投票

这些命令由root用户运行,如docs中指定。

指定的命令以root用户身份运行,并按名称的字母顺序进行处理。容器命令从登台目录运行,在您的源代码被部署到应用程序服务器之前,会在其中提取源代码。当将源部署到最终位置时,使用容器命令对登台目录中的源代码进行的任何更改都将包括在内。

((重点挖掘)。

重新创建缓存时,新目录归root所有,并且您的PHP进程无法在其中写入。

执行命令,使其以与PHP运行时相同的用户身份运行。例如。如果它在www-data用户下运行:

container_commands:
    01-clear-cache:
        command: sudo -u webapp php bin/console cache:clear --no-warmup --env=prod
© www.soinside.com 2019 - 2024. All rights reserved.