web-dev-qa-db-ja.com

php5-fpm pingおよびステータスページのエラー? LimitInternalRecursionエラー?

私がここで範囲外かどうかはわかりませんが、私はもともとこれをUbuntuに尋ねました here

Php5-fpmは正常に動作しています。私のサイト全体は期待通りに動作しており、ほとんど問題はありません。ただし、pingおよびステータスページを使用することはできません。 mydomain.com/statusまたはmydomain.com/pingに移動すると、エラー(403、404、500、構成によって異なります)が表示されます。

私はLAMPスタックに非常に新しいです。私はこれでオオカミに投げられました、しかし、私はそれを理解させなければなりません。

以下に適切と思われるものをすべて含めますが、何かお見逃しがある場合は、ご理解のほどよろしくお願いいたします。

Ubuntu 14.04の実行
Apache 2.4
PHP 5.5

Apacheで有効なMod(少なくとも重要なもの):

  • mpm_event
  • fastcgi
  • 行動
  • エイリアス

Fpm構成は機能しているため、大部分を省きますが、pingとステータスの設定は次のとおりです。かなりバニラのセットアップ。

pm.status_path = /status
ping.path = /ping

TCP/IPオーバーヘッドを削減するためにソケットでリッスンしています...

listen = /var/run/php5-fpm.sock

/ etc/Apache2/conf-available /でphp5-fpm.confを構成し、conf-enabledでシンボリックリンクを作成しました。その内容は次のとおりです。

<IfModule mod_fastcgi.c>

    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <LocationMatch "/(ping|status)">
        SetHandler php5-fcgi-virt
        Action php5-fcgi-virt /php5-fpm-handler.fcgi virtual
    </LocationMatch>

</IfModule>

私が見つけたドキュメントのほとんどは、pingおよびステータスページを機能させるために必要な唯一のホットフィックスとしてLocationMatchを参照しています。ここからどこに行くかわかりません。 Webで見つけることができるものは何でも試しました。 php5-fpm.confファイルにさまざまな変更を加えましたが、各変更は効果がないか、別のエラーにつながります。内部サーバーエラー、アクセス許可の問題などが発生しました。このセットアップでは、現在500内部サーバーエラーが発生しています。

すべてのヘルプは高く評価されています!ありがとうございました!


2015年2月9日編集:

この役立つガイドを読んだ後 here php5-fpm.confのLocationMatchを次のように置き換えました。

<FilesMatch "^ping|status$">
    SetHandler php-script
</FilesMatch>

これで問題は解決しませんでしたが、効果は変わりました。 404エラーが発生しました。ここに何が欠けているのかまだわかりません...


2015年2月10日編集:

「LocationMatch」は正しく、「FilesMatch」は成功に近づかないという一般的な概念に戻りました。繰り返しになりますが、一般にホスティングサーバーとLAMPサーバーは非常に新しいものですが、404エラー(「FilesMatch」を使用)が発生した場合、/ var/log/apace2/error.logには何も記録されませんが、「LocationMatch」それでも500エラーが表示され、ログエントリが表示されます。

[Tue Feb 10 00:29:17.216917 2015] [core:error] [pid 8978:tid 140200547378944] [client IP:Port] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

私はWebを少し掘り下げましたが、この問題の修正を説明する適切なドキュメントを見つけることができません。何か案は?

1
Erick Christian

クレジット:Harold SnelUbuntuでこれに答えてくれた...彼は言った:

同じ問題がありました。たくさんのGoogle-ingと試みで、私はそれを理解しました。

仮想ホストで設定したものと(php-fpm.confの)fastcgi.confで設定したものを一致させる必要があります。

さらに、/ etc/php5/fpm/pool.d/www.conf構成で「/ fpm-status」と「/ fpm-ping」を使用することも重要です。そうすれば、Apacheの独自の「ステータス」ページと競合しないはずです。

これが私のfastcgi.confです:

<IfModule mod_fastcgi.c>
    AddType application/x-httpd-fastphp5 .php
    Action application/x-httpd-fastphp5 /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
            Order allow,deny
            Allow from all
    </Directory>
</IfModule>

これは、Apache 000-default.confに追加したものです。

<LocationMatch "/(fpm-ping|fpm-status)">
     SetHandler php5-fcgi-virt
     Action php5-fcgi-virt /php5-fcgi virtual
</LocationMatch>

デフォルトのApache vhostへのアクセスを制限しない場合、fpt-pingおよびfpm-statusのLocationMatchに追加する必要があります。

     Order deny,allow
     Deny from all
     Allow from <your-IP>

仮想ホストごとにphp-fpmを使用できるようにするには、「標準」のlibphp.soを保持し、次の行を仮想ホストに追加して、すべてのphpファイルをphp-fpmにリダイレクトします。

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
            SetHandler application/x-httpd-fastphp5
    </FilesMatch>

ハッピーphp-fpm'ing !!!

2
Erick Christian