为什么 php-fpm 以 nobody 身份运行?

为什么 php-fpm 以 nobody 身份运行?

我最近按照此处的说明在我的服务器(CENTOS 6.5 x86_64 标准,WHM 11.44.1(build 7))上安装了 php-fpm:http://infoliser.com/how-to-configure-apache-2-2-with-php-fpm-using-whm-cpanel-and-easyapache/

据透露phpinfo(),服务器 API 现在是 FPM/FastCGI。

但是,当我运行包含的 php 脚本时exec('id'),我得到:

uid=99(nobody) gid=99(nobody) groups=99(nobody)

我感觉 php-fpm 将以 php 脚本所有者的 uid 运行,而不是以 http 进程的所有者运行(如本例所示)。此页面http://php-fpm.org/说 fpm 具有“启动具有不同 uid/gid/chroot/environment 和不同 php.ini 的工作程序的能力(取代 safe_mode)”。

我究竟做错了什么?

答案1

PHP-FPM 并不以脚本所有者的身份执行脚本,而是以匹配池配置中配置的用户身份执行脚本。

在我的 Debian 系统上,默认池www定义在/etc/php5/fpm/pool.d/www.conf并包含:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

您的池中可能会有user=nobodygroup=nobody。您可以创建更多池并通过在 Apache/NGINX/其他配置中分配它们来使用它们。

相关内容