У меня есть nginx, установленный на тестовой машине, на которой размещен Wordpress. Я пытался решить некоторые проблемы с разрешениями и наткнулся на то, что не могу понять.
Несмотря на то, что везде, где я знаю, я говорю, что он запускается от имени пользователя nginx, whoami
сообщает "apache".
ps aux | grep [n]ginx
, главный процесс работает как root, рабочий - как nginx. <?php echo(exec("whoami")); ?>
на странице php, и он отвечает как 'apache'Кажется, я не могу найти нигде, где он видит эту учетную запись apache. Я даже хотел бы удалить его, но userdel говорит, что пользователь вошел в систему, когда я пытаюсь это сделать.
В настройке Nginx вы, вероятно, используете PHP-FPM для интерпретации скриптов PHP. PHP-FPM имеет собственную конфигурацию, определяющую пулы. Каждый пул может работать как отдельный пользователь. По сути: Nginx должен иметь возможность читать (статические) файлы, которые вы обслуживаете, непосредственно из него (и просматривать (т.е. x) разрешения в каталоге) PHP-FPM (соответствующий пул) должен иметь доступ для чтения к файлам, и доступ для записи в папку (или любые файлы, которые вы хотите изменить) (и разрешения на просмотр).
Конфигурация PHP-FPM обычно находится в /etc/php-fpm.conf и /etc/php-fpm.d/*.conf
Соответствующая часть конфигурации PHP-FPM может выглядеть следующим образом:
[pool_name]
listen = 127.0.0.1:9000
user = apache
group = apache
Проверьте пользователя, у которого работает PHP-FPM: ps -ef | grep php-fpm
(у вас может быть несколько экземпляров php-fpm, возможно, с более чем одним пользователем, если у вас несколько пулов).
(Кстати, если вы посмотрите в своей конфигурации Nginx, вы, скорее всего, найдете ссылку на обработчик FastCGI, например: fastcgi_pass 127.0.0.1:9000;
. Указанные здесь адрес и порт должны совпадать с адресом и портом пула, пользователя / группу которого вы изменяете.
Кроме того, просто для диагностических целей, вместо того, чтобы смотреть на пользователя, от имени которого запущен nginx, вы могли бы найти, какая программа выполнялась как пользовательский apache (т.е. ps -ef | grep apache
).
Это зависит от того, как выполняются ваши скрипты php, они либо запускаются на сервере apache, а nginx перенаправляет на него запросы php, либо они запускаются процессом php-fpm / FastCGI, работающим как apache. Вам нужно это проверить и заставить их работать как nginx, если это то, что вам нужно.
Если используется php-fpm, вам необходимо найти соответствующую конфигурацию в /etc/php-fpm.d/, например /etc/php-fpm.d/somesite.conf, и убедиться, что следующие строки выглядят следующим образом:
user = nginx
group = nginx
Затем перезапустите установку php-fpm, выполнив:
service php-fpm restart
или
/etc/init.d/php-fpm restart