我已经设置了 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`;
?>
我已经htdocs
递归地设置了 0750 权限(这个文件夹中的所有东西也继承了这些权限):
owner: mary RWX
group: www-data RX
它运行良好。但由于我mary
在 PHP-FPM 中运行,我认为 Apache 实际上不需要访问htdocs
.
所以我也尝试将 0700 设置为htdocs
递归,这实际上意味着只允许所有者mary
对该文件夹具有 RWX 权限。但是,当我访问 中的页面时htdocs
,我的权限被拒绝,而使用 0750 时不会发生这种情况。
为什么 Apachehtdocs
在这种情况下仍然需要访问?
Apache 正在读取您的文件,然后将其传递给 php-fpm。通过不让 Apache 访问该文件,它无法将文件传递给解释器。它必须对这些文件具有读取权限。
我的猜测是 PHP 可能会像 mary 一样运行,但 apache 在执行之前仍然需要 rx 来读取 php 文件。
向我们展示您连接 php-fpm 和 apache 的方式,在 Apache 端肯定有一些 Directory(或此类)指令,或者您可能使用过 mod_proxy_fcgid?
如果没有,那么 Apache 肯定会在测试任何 fastcgi 任务之前禁止访问。在 Apache 中使用调试日志级别当然可以显示在目录上允许和不允许 apache 访问的请求之间的区别。