Я установил среду 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 перед его выполнением.