为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2022-10-28 15:28:58
我正在将 Symfony 4.4 应用程序部署到 AWS ElasticBeanstalk 并注意到每次部署后都没有清除缓存。该应用程序运行良好,但陈旧的缓存异常。为了解决缓存问题,我添加了以下文件:/.ebextensions/deploy.configcontainer_commands:     01-clear-cache:         command: php bin/console cache:clear --no-warmup --env=prod这似乎清除了缓存,但后来它以某种方式更改了权限,以便我在尝试访问应用程序时收到错误。致命错误:未捕获的 RuntimeException:无法写入缓存目录 (/var/app/current/var/cache/prod)为什么运行cache:clear会更改权限,有没有办法避免这种情况发生,或者至少如何在之后解决,即在同一个/另一个.ebextensions文件中?
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超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


查看完整回答
反对 回复 2022-10-28
?
呼唤远方

TA贡献1856条经验 获得超11个赞

使用 Ansible 时,您实际上可以将become: true其用作成为 root 用户并become_user: xxx成为所需用户的机制。


例子:


---

# roles/app/tasks/main.yml

- name: Run composer install

  become: true

  become_user: ubuntu

  composer:

    command: install

    working_dir: "{{ deploy_path }}"

请注意,您必须定义一个名为deploy_path.


查看完整回答
反对 回复 2022-10-28
  • 2 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信