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

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

我已经设置了 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

运行良好。但由于我是以maryPHP-FPM 方式运行的,我认为 Apache 实际上不需要访问htdocs

因此,我尝试htdocs以递归方式将 0700 设置为 on,这实际上意味着仅允许所有者mary对此文件夹拥有 RWX 权限。但是当我访问 中的页面时,权限被拒绝htdocs,而使用 0750 时不会发生这种情况。

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

答案1

Apache 正在读取您的文件,然后将其传递给 php-fpm。由于不授予 Apache 访问该文件的权限,它无法将该文件传递给解释器。它必须具有这些文件的读取权限。

答案2

我的猜测是 PHP 可能以 mary 的身份运行,但 apache 在执行之前仍然需要 rx 来读取 php 文件。

答案3

请向我们展示您连接 php-fpm 和 apache 的方式,Apache 端肯定有一些目录 - 或类似的 - 指令,或者您可能使用了 mod_proxy_fcgid?

如果不是,那么 Apache 肯定会在测试任何 fastcgi 任务之前禁止访问。使用 Apache 中的调试日志级别肯定可以显示允许和不允许 apache 访问目录的请求之间的差异。

相关内容