Один из способов справиться с правами доступа к файлам, когда вы запускаете веб-приложение, которое требует либо автоматического развертывания, либо постоянных ручных обновлений, таких как использование bin/console от symfony2, — это убедиться, что файлы принадлежат пользователю, под которым работает ваше приложение.
Поскольку вы не предоставили параметры среды, я сделаю несколько предположений и предоставлю вам общий сценарий установки, надеюсь, это поможет вам найти лучшее решение для вашего конкретного случая.
Допущения окружающей среды:
- ОС: вариант Linux;
- Веб-сервер: nginx будет работать как www-данные;
- PHP: php-fpm будет работать как testapp и использовать соединение через сокет для этого приложения;
Общие шаги настройки:
В файле /etc/nginx/nginx.conf убедитесь, что пользователь/группа настроены на www-data;
В файле /etc/php5/fpm/pool.d/apptest.conf убедитесь, что для пользователя и группы установлено значение testapp;
СОВЕТ: Возможно, потребуется создать указанный выше файл, в этом случае вам следует просто скопировать содержимое файла www.conf, расположенного в той же папке.
В файле /etc/php5/fpm/pool.d/apptest.conf убедитесь, что для listen.owner и listen.group установлено значение www-data;
Убедитесь, что в этом файле /etc/php5/fpm/pool.d/apptest.conf есть строка, подобная приведенной ниже:
listen = /var/run/php5-fpm.apptest.sock.
ПРИМЕЧАНИЕ: часть fpm.apptest.sock этой строки выше — это имя файла, который еще не существует, но будет создан при перезапуске php. Преимущество в том, что у вас будет изолированный php-процесс для этого приложения;
- a) В случае с nginx и если вы используете соединения через сокеты, обязательно добавьте эту строку в файл конфигурации apptest:
unix:/var/run/php5-fpm.apptest.sock;
б) Если вы используете apache, добавьте эту строку в этот файл конфигурации:
-socket /var/run/php5-fpm.apptest.sock;
- Если вы используете Linux, создайте пользователя без пароля, и он должен называться apptest.
Примечание: apptest — это имя вашего приложения, это также будет пользователь, под которым будет работать php, и он также должен быть владельцем файлов/папок приложения.
- Перезапустите php и nginx/apache.
Совет: чтобы изменить пользователя в Linux, у которого нет пароля, вы должны иметь привилегии root и запустить: sudo -u apptest -i.
После этого вы должны выполнять все свои команды от имени ранее созданного пользователя apptest, включая запуск symfony2 bin/console.
Это очень общие шаги, поэтому, если вам нужны какие-либо разъяснения, дайте мне знать.
person
bluetazmanian
schedule
19.01.2015