在使用PHP-FPM时,www-data仍然需要在htdocs上具有读取和执行权限,这是正常的吗?

我已经build立了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`; ?> 

我已经对htdocsrecursion地设置了0750权限(这个文件夹中的所有内容也都inheritance了这些权限):

 owner: mary RWX group: www-data RX 

它运行良好。 但是,因为我在PHP-FPM中运行,我认为Apache实际上并不需要访问htdocs

所以我试图在recursion上设置htdocs 0700,这实际上意味着只允许所有者对此文件夹拥有RWX权限。 但是,当我访问htdocs的页面时,我获得了权限被拒绝的情况,这在使用0750时不会发生。

为什么在这种情况下Apache仍然需要访问htdocs

Apache正在读你的文件,然后传递给php-fpm。 通过不给Apache访问文件,它没有办法将文件传递给解释器。 它必须具有读取这些文件的权限。

我的猜测是,PHP可能会作为玛丽运行,但Apache仍然需要RX读取PHP文件执行之前。

告诉我们你连接php-fpm和apache的方式,Apache方面肯定有一些目录 – 或者这样的说明,或者你使用过mod_proxy_fcgid?

如果没有,那么在任何fastcgi任务被testing之前,Apache肯定是禁止访问的。 在Apache中使用debugging日志级别可以肯定地显示请求与目录上允许的apache访问之间的区别。