Php、Apache、fastcgi_handlerを次の方法でインストールしました。
emerge dev-lang/php www-Apache/mod_fastcgi_handler
/etc/Apache2/modules.d/70_mod_php5.confの関連する行を更新することで、なんとか機能させることができました。
に:
# AddHandler application/x-httpd-php .php .php5 .phtml
# AddHandler application/x-httpd-php-source .phps
AddHandler fcgi:/var/run/php-fpm.socket .php .php5
および/etc/conf.d/Apache2から
Apache2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -D PHP5 -D FASTCGI_HANDLER"
ドキュメントルートには、インストールを確認するための次のファイルがあります。
<?php
echo '<pre>';
var_dump(exec('whoami'));
var_dump(php_sapi_name());
次に、次の仮想ホストがあります。
<IfDefine DEFAULT_VHOST>
<VirtualHost localhost:80>
ServerName local.testdomain.com
ServerAlias local.testdomain.com
SuExecUserGroup foobar foobar
DocumentRoot "/home/foobar/workspace/local.testdomain.com"
<Directory "/home/foobar/workspace/local.testdomain.com">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfDefine>
結果:501エラー
[Wed Jul 10 01:52:10 2013] [error] [client ::1] (13)Permission denied: access to / denied (filesystem path '/home/foobar/workspace/') because search permissions are missing on a component of the path
ドキュメントルートをユーザーディレクトリの外に移動すると、test.phpは正しく実行されているように見えますが、次の結果が得られます。
string(6) "nobody"
string(8) "fpm-fcgi"
私はそれが次のようになることを期待しています:
string(6) "foobar"
string(8) "fpm-fcgi"
私の想定では、SuExecを正しく動作させることができれば、問題なくユーザーのディレクトリをトラバースできると思います。
私の推測では、これはPHP-FPMが正しく機能していることを確認しますが、このディレクティブ: "SuExecUserGroup foobar foobar"は機能しません。ログに次の行が表示されるため、SuExecは確実に機能しています。
[Wed Jul 10 02:09:47 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
誰かが私に何が欠けているのか、そしてどうすればそれを修正できるのかを教えてくれることを願っています。
前もって感謝します。
私はGentooを使用しています。
PHP-FPMを使用すると、PHPプロセスのuidを変更する場合、SuExecは不要になります。
php-fpm構成ファイル のディレクティブ 'user'および 'group'を使用して、同じことを実行できます。