У меня есть сценарий PHP, который создает каталог и выводит изображение в каталог. Это прекрасно работало под Apache, но недавно мы решили переключиться на NGINX, чтобы больше использовать нашу ограниченную оперативную память. Я использую команду PHP mkdir () для создания каталога:
mkdir(dirname($path['image']['server']), 0755, true);
После перехода на NGINX я получаю следующее предупреждение:
Warning: mkdir(): Permission denied in ...
Я уже проверил все разрешения родительских каталогов, поэтому решил, что мне, вероятно, нужно изменить пользователя NGINX или PHP-FPM, но я не уверен, как это сделать (мне никогда не приходилось указывать пользователя разрешения для APACHE). Я не могу найти много информации по этому поводу. Любая помощь была бы замечательной!
(Примечание: помимо этого небольшого зависания, переключение на NGINX было довольно простым; я использую его впервые, и буквально на то, чтобы начать работу с NGINX, потребовалось всего около 10 минут. Теперь я просто гладю изгибов.)
Запустите nginx и php-fpm как www: www
Отредактируйте nginx.conf и установите пользователь к www www;
Если главный процесс запускается от имени пользователя root, то nginx установит для setuid () / setgid () значение USER / GROUP. Если GROUP не указана, тогда nginx использует то же имя, что и USER. По умолчанию это никто и никто, или группа nogroup, или --user = USER и --group = GROUP из сценария ./configure.
редактировать php-fpm.conf и установите пользователя и группу на www
.
user - Unix-пользователь процессов. По умолчанию "www-data"
group - группа процессов Unix. По умолчанию "www-data"
В Ubuntu 14.04 файл для изменения пользователь и группа в PHP-FPM является: /etc/php5/fpm/pool.d/www.conf
. В этом файле измените эти параметры:
user = www
group = www
listen.owner = www
listen.group = www
Чтобы ответить на ваш актуальный вопрос просто изменить user
линия в nginx.conf
вот так:
user [username];
Пример:
user www-data;
Предпочтительный пользователь для запуска Nginx на самом деле отличается в зависимости от операционной системы. Иногда предполагается, что Nginx запускается как www-data
. В других случаях он должен работать как nobody
.
В некоторых операционных системах (например, Windows) это даже не имеет значения, и user
линия в nginx.conf
можно закомментировать или полностью исключить.
Следующее решение помогло мне изменить веб-пользователя, используя Ubuntu 18.04 LTS
, nginx 1.14
и php7.2-fpm
.
редактировать /etc/nginx/nginx.conf
и установите пользователя на webuser;
user webuser;
редактировать /etc/php/7.2/fpm/pool.d/www.conf
.
user = webuser
group = webuser
...
listen.owner = webuser
listen.group = webuser