Symfony prod.log exception / var / cache / prod / annotations недоступны для записи

У меня есть сеть на основе Symfony 3. Для развертывания у меня есть собственный сценарий bash. В этом скрипте есть такие процедуры, как git pull, очистить кеш ...

На сервере: Debian GNU / Linux 9 (stretch)

Но после развертывания я вижу исключение в prod.log:

[2018-05-11 16:55:36] request.CRITICAL: Неперехваченное исключение PHP InvalidArgumentException: «Каталог» /var/www/domain.com/var/cache/prod/annotations «недоступен для записи». в /var/www/domain.com/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php строка 92 {"исключение": "[объект] (InvalidArgumentException (код: 0): каталог \" /var/www/domain.com/var/cache/prod/annotations \ "не доступен для записи. по адресу /var/www/domain.com/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php: 92) "} []

Но проблема в том, что до и после очистки кеша у меня есть команда chmod -R 777 /var, а после развертывания, если я смотрю в / var / cache / prod / annotations, я вижу новые файлы, время изменения которых равно времени, когда я запускаю очистку кеша (через скрипт sh).

Есть у кого-нибудь идеи? Куда смотреть какой чцек?


person Lajdák Marek    schedule 11.05.2018    source источник
comment
chmod -R 777 /var Я считаю, что изменять права доступа для всего /var каталога - ужасная идея. : /   -  person A.L    schedule 11.05.2018


Ответы (2)


Эта ошибка возникает, если ваша оболочка сначала записывает в app/cache, а затем вы открываете свой веб-сайт, где другие части также должны быть записаны в эту папку.

Простое решение: добавьте пользователя оболочки в группу, которую использует ваш веб-сервер, возможно, www-data, через sudo usermod -a -G www-data userName

person Nico Haase    schedule 11.05.2018

Проблема заключается в разрешениях, чтобы исправить это, используйте это:

setfacl -R -m u:www-data:rX folderProject 

setfacl -R -m u:www-data:rwX folderProject/var/cache folderProject/var/logs folderProject/var/sessions folderProject/app/sessions  

setfacl -dR -m u:www-data:rwX folderProject/var/cache folderProject/var/logs folderProject/var/sessions folderProject/app/sessions  

Замените папкуProject именем своего проекта. Если вы используете Ubuntu с apache, эта команда решает проблему, если вы используете другой GNU / Linux, измените пользовательские www-данные на своего пользователя.

person Fernando León    schedule 11.05.2018
comment
я получаю -bash: setfacl: command not found и / app / sessions не существует - person Lajdák Marek; 11.05.2018
comment
Какую операционную систему вы используете на сервере? - person Fernando León; 11.05.2018
comment
В вашем проекте нет этой папки, удалите эту часть команды и попробуйте еще раз. - person Fernando León; 11.05.2018
comment
Debian GNU / Linux 9 (stretch) - это ОС, и команда setfacl не найдена - person Lajdák Marek; 11.05.2018
comment
Очень странно, прочтите эту информацию: wiki.debian.org/Permissions#Default_.28inherited .29_ACL - person Fernando León; 11.05.2018
comment
Ну, если acl не установлен, он не установлен. Но решение добавить правильные группы лучше. - person Nico Haase; 11.05.2018