10

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 ソケットは機能しない理由がまだわかりません。

4

4 に答える 4

5

私はこれとまったく同じ問題に苦しんでおり、phpmyadmin を機能させることができませんでした。上記の「ファイルが見つかりません」というメッセージがまだ表示されていました。私の問題は、./sites-available フォルダー内の 000-default.conf ファイル内の ProxyPassMatch に自分のエントリを配置する必要があり、これらのエントリをデフォルトのエントリの前に配置する必要があったことです。これは、解決策を見つけたこのページの一番下にある概要でした: http://jordanconway.com/set-up-apache-2-4-with-php-fpm-on-ubuntu-13-10/

参考までに、私のセットアップ方法を以下に示します。

<VirtualHost *:80>
   ...
    DocumentRoot /var/www/html
   ...
    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
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>
于 2015-10-02T16:28:50.683 に答える
1

これは、ソケットがApache 2.4.9 からサポートされており、おそらく 2.4 の以前のビルドを使用したことが原因でしょうか?

于 2014-07-05T14:40:58.703 に答える
0

これを解決したようです。

  1. PHPMyAdmin は mod_php5 を使用するように設定されていますが、PHP-FPM 経由で PHP を使用しているため、インストールされていない可能性があります。
  2. phpmyadmin セットアップには、PHP ファイルへの正しいパスを持つプロキシパスが必要であることを正しく識別しました。

最後に、通常、php-fpm は UNIX ソケットまたはTCP でリッスンしますが、両方ではありません。listenで設定されているディレクティブは何/etc/php5/fpm/pool.d/www.confですか? 複数のlistenディレクティブが定義されていますか?

Listen 127.0.0.1:9000そこにセットされているのは1つだけだと思います。

于 2014-05-04T20:59:12.287 に答える