web-dev-qa-db-ja.com

PHP-FPMの/ statusページに手動でアクセスする(Apacheをバイパスする)

PHP5.3.3バグ があり、Apache2を介してphp-fpmの/ statusページを表示できません。このデータに手動でアクセスする方法はありますか?ボックスをアップグレードできません(Ubuntu 10.10、php5.3.4はサポートされていません)。

http://inode.co.nz/testing-a-fastcgi-service の手法を使用して接続を試みましたが、うまくいきませんでした。

9
mikewaters

/ statusページをロードするには、特定の環境変数、特にSCRIPT_NAMESCRIPT_FILENAMEQUERY_STRINGREQUEST_METHODを設定する必要があります。 DOCUMENT_ROOTは必要ありません(通常のリクエストの場合でも)。

Php-fpm構成セットの正しいプール(グローバル設定ではない)の下(またはコメント解除):

pm.status_path = /status

次に、(PORTを置き換えて)実行します。

SCRIPT_NAME=/status \
SCRIPT_FILENAME=/status \
QUERY_STRING= \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect 127.0.0.1:PORT

出力例:

X-Powered-By: PHP/5.3.9
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-Type: text/plain

pool:                 web1
process manager:      dynamic
start time:           28/Jan/2012:20:49:44 -0500
start since:          5955
accepted conn:        41
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       1
active processes:     1
total processes:      2
max active processes: 1
max children reached: 0

注:結果はプール固有です。

RHEL/CentOS 6システムでPHP v5.3.9。

(CentOSを使用している人のためのサイドポイント-cgi-fcgiを提供するパッケージはfcgiという名前でEPELから入手できます)

余談ですが、pingでも同じことができます。

セット:ping.path = /ping(php-fpm config)

SCRIPT_NAME=/ping\
SCRIPT_FILENAME=/ping\
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect 127.0.0.1:PORT

または、通常のPHPファイルの場合(フルパスを使用する必要があるため、QUERY_STRINGはオプションです):

SCRIPT_NAME=/test.php \
SCRIPT_FILENAME=/var/www/path/to/test.php \
QUERY_STRING= \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect 127.0.0.1:PORT
12
cyberx86