Назад | Перейти на главную страницу

Нормально ли, что www-данным по-прежнему требуются разрешения на чтение и выполнение в htdocs при использовании PHP-FPM?

Я установил среду Apache + PHP-FPM, и я установил следующее в файле пула PHP-FPM:

[www]
user = mary
group = mary
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 50

Все хорошо. Я подтвердил в phpinfo, что он работает в PHP-FPM, и он также работает как пользователь mary по следующим кодам:

<?php
echo `whoami`;
?>

Я установил разрешения 0750 на htdocs рекурсивно (все внутри этой папки также наследует эти разрешения):

owner: mary RWX
group: www-data RX

Работает нормально. Но поскольку я бегу как mary в PHP-FPM я думаю, что Apache на самом деле не нуждается в доступе к htdocs.

Поэтому я попытался установить 0700 на htdocs также рекурсивно, что на самом деле означает разрешение только владельцу mary иметь разрешения RWX для этой папки. Но потом мне отказали в разрешении, когда я открываю страницы в htdocs, чего не происходит при использовании 0750.

Почему Apache все еще нужен доступ к htdocs в этой ситуации?

Apache читает ваш файл, а затем передает его в php-fpm. Не предоставляя Apache доступа к файлу, он не может передать файл интерпретатору. Это должен иметь доступ для чтения к этим файлам.

Покажите нам, как вы соединили php-fpm и apache, наверняка есть какие-то директории - или подобные - инструкции на стороне Apache, или, может быть, вы использовали mod_proxy_fcgid?

Если нет, то Apache, безусловно, запрещает доступ до того, как какая-либо задача fastcgi будет протестирована. Использование уровня журнала отладки в Apache, безусловно, может показать разницу между запросом с доступом к apache, разрешенным в каталоге, и без него.

Я предполагаю, что PHP может работать как mary, но apache все еще нуждается в rx для чтения файла php перед его выполнением.