Accéder manuellement à la page d'état de PHP-FPM (contourner Apache)

9

Il y a un bogue PHP5.3.3 qui ne me permet pas de voir la page / statut de php-fpm via Apache2. Existe-t-il un moyen d'accéder manuellement à ces données? Je ne peux pas mettre à niveau la boîte (Ubuntu 10.10, php5.3.4 non pris en charge).

J'ai essayé de me connecter en utilisant la technique ici: http://inode.co.nz/testing-a-fastcgi-service , mais pas de chance.

mikewaters
la source

Réponses:

12

Pour charger la page d'état de /, vous devez avoir certaines variables d'environnement définies, notamment: SCRIPT_NAME, SCRIPT_FILENAME, QUERY_STRINGet REQUEST_METHOD. Vous n'en avez pas besoin DOCUMENT_ROOT(même pour une demande normale).

Sous le pool correct (ce n'est pas un paramètre global) de votre ensemble de configuration php-fpm (ou décommentez):

pm.status_path = /status

Exécutez ensuite (en remplaçant PORT):

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

Exemple de sortie:

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

Remarque: les résultats sont spécifiques au pool.

Testé sur un système RHEL / CentOS 6 avec PHP v5.3.9.

(Point de mention secondaire pour les personnes utilisant CentOS - le package qui fournit cgi-fcgiest nommé fcgiet disponible auprès d'EPEL)

En passant, la même chose peut être obtenue avec ping:

Set: ping.path = /ping(configuration php-fpm)

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

Ou pour un fichier PHP standard (vous devez utiliser le chemin complet, QUERY_STRING est facultatif):

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
cyberx86
la source
ÇA A MARCHÉ!!! J'avais essayé chaque itération de (REQUEST_METHOD et DOCUMENT_ROOT et (SCRIPT_NAME ou SCRIPT_FILENAME)). Merci infiniment.
mikewaters