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