Symfony on AWS EB - Невозможно записать в каталог кеша после очистки кеша - PullRequest
1 голос
/ 13 марта 2020

Я развертываю приложение Symfony 4.4 на AWS ElasticBeanstalk и заметил, что кеш не очищается после каждого развертывания.

Приложение работает нормально, исключение сделано в устаревшем кеше.

Чтобы решить проблему с кешем, я добавил следующий файл:

/. Ebextensions / deploy.config

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

Кажется, что он очищает кеш, но затем каким-то образом он меняется разрешения, чтобы я мог получить ошибку при попытке доступа к приложению.

Неустранимая ошибка: Uncaught RuntimeException: Невозможно записать в каталог кэша (/ var / app / current / var / cache / prod )

Почему запуск cache:clear меняет разрешения и есть ли способ избежать этого или хотя бы как впоследствии разрешить, ie, в том же / другом файле .ebextensions?

1 Ответ

1 голос
/ 13 марта 2020

Эти команды запускаются пользователем root, как указано в документах .

Указанные команды выполняются как root пользователь и обрабатываются в алфавитном порядке по имени. Контейнерные команды выполняются из промежуточного каталога, где исходный код извлекается до развертывания на сервере приложений. Любые изменения, внесенные вами в исходный код в промежуточном каталоге с помощью команды контейнера, будут включены, когда источник будет развернут в его окончательном расположении.

(выделение мое).

При повторном создании кэша новые каталоги принадлежат root, и ваш процесс PHP не может записать туда, если он необходимо.

Выполните команду, чтобы она выполнялась с использованием того же пользователя, что и ваша PHP среда выполнения. Например, если он работает под пользователем www-data:

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