最近、php-fpmを自分のサーバー(CENTOS 6.5 x86_64標準、WHM 11.44.1(ビルド7))に次の手順に従ってインストールしました: http://infoliser.com/how-to-configure-Apache-2 -2-with-php-fpm-using-whm-cpanel-and-easyapache /
phpinfo()
によって明らかになったサーバーAPIは、FPM/FastCGIになりました。
しかし、exec('id')
を含むphpスクリプトを実行すると、次のようになります。
uid=99(nobody) gid=99(nobody) groups=99(nobody)
私は、php-fpmがhttpプロセスの所有者(この場合のように)ではなく、phpスクリプトの所有者のuidとして実行されるという印象を受けました。このページ http://php-fpm.org/ は、fpmに「異なるuid/gid/chroot/environmentと異なるphp.ini(safe_modeに置き換わる)でワーカーを起動する機能」があると述べています。
何が悪いのですか?
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 /どのような構成でもそれらを割り当てることで使用できます。