我正在将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
文件中?
这些命令由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