我最近按照此处的说明在我的服务器(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=nobody
和group=nobody
。您可以创建更多池并通过在 Apache/NGINX/其他配置中分配它们来使用它们。