是否有办法配置 nginx/php 以便它使用特定用户创建文件。
例如,当 drupal/wordpress 网站上传文件时,用户被分配如下:john:www-data
nginx.conf 确实有一个用户,但是据我所知,这只会改变 nginx 在系统上使用的用户。
答案1
正如 Tero 所建议的,您需要更改负责托管您想要影响的网站的 php-fpm 进程的用户。
PHP-FPM 有“池”,我认为大多数管理员通常会为每个托管站点配备一个池。因此,如果您托管 example.com 和 another-example.com,则可以有两个 php-fpm 池,每个池运行各自的站点。不同池的好处是您可以分别为每个池定义配置(从而以不同的用户/组运行进程)。
你没有指定你的发行版/配置,所以我只能告诉你,你的池配置文件是大概位于/etc/php-fpm.d/*.conf
。因此,你可以使用/etc/php-fpm.d/example.com.conf
:
[example.com]
user = john
group = www-data
...
然后/etc/php-fpm.d/another-example.com.conf
是另一个池:
[another-example.com]
user = sally
group = www-data
...
php-fpm 配置采用 INI 格式,我发布的只是相关的用户/组指令。正确定义池还需要更多配置选项。请参阅“池指令列表”部分这一页了解更多信息。
您需要重新启动 php-fpm 服务以使池更改生效。您可以在php-fpm -t
大多数系统上重新启动之前测试您的配置(从而避免可能的停机)。我认为有些发行版使用php5-fpm -t
。
最后,是的,正如您所说,nginx.conf 用户/组指令仅影响 Nginx。PHP-FPM 作为单独的进程运行,或多或少独立于 Nginx。
答案2
没有办法做到这一点。PHP 由 PHP-FPM 进程运行,该进程以特定用户身份运行。创建的文件归该用户所有。
只有超级用户才能更改文件的所有者,以超级用户权限运行 PHP-FPM 进程并不安全。
更改该过程上传的文件的所有权状态的唯一选择是更改运行 PHP-FPM 的用户。