Debian でこの設定を行っています: apache 2.4 proxy_fcgi および php-fpm (v5.5)。私のvirtualhostファイルには次のものがあります:
<VirtualHost *:80>
DocumentRoot /var/www/html
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://./var/www/html
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
すべてが正常に動作し、/var/www/html/ でリクエストした phpinfo() とすべての php ファイルを確認できます。
Debian リポジトリから phpmyadmin のインストールを続行しますが、http://MY.IP/phpmyadminを参照すると、「ファイルが見つかりません」というエラーが表示され、Apache エラー ログに記録されます。
"[proxy_fcgi:error] AH01071: Got error 'Primary script unknown\n'"
Debian phpmyadmin パッケージは、コンテンツを /usr/share/phpmyadmin にダンプします。/usr/share/phpmyadmin の下に test.html ファイルを作成すると、http://MY.IP/phpmyadmin/test.htmlからその内容を確認できます
問題は、/usr/share/phpmyadmin の下にある php ファイルが処理されていないことです。phpmyadmin Apache の構成は次のとおりです。
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/
</IfModule>
</Directory>
...
Apache構成ファイルにロードされます。
mod_php がインストールされていないため、php ファイルの処理はありません。/usr/share/phpmyadmin ディレクトリの下の php ファイルを処理するために proxy_fcgi を使用するように apache に指示するにはどうすればよいですか?
>>update<< phpmyadmin apache の conf に proxypassmatch ディレクティブを追加しました
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi:///usr/share/phpmyadmin/
動作することを期待していますが、同じエラーが発生し続けます。
>>更新 2<< php-fpm unix ソケットをネットワーク (127.1:9000) に置き換え、virthualhost ファイルの ProxyPassmatch を次のように置き換えました。
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
そしてphpmyadminのApache confで:
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php
MY.IP/phpinfo.php にアクセスすると、/var/www/html/phpinfo.php から phpinfo を取得し、MY.IP/phpmyadmin/phpinfo.php にアクセスすると、処理された内容を取得します。 /usr/share/phpmyadmin/phpinfo.php.
私の問題は解決しましたが、php-fpm とのネットワーク接続は機能するのに、UNIX ソケットは機能しない理由がまだわかりません。