Доступ к PHP-FPM / странице состояния вручную (в обход Apache)

9

Есть ошибка PHP5.3.3 , которая не позволяет мне просматривать страницу статуса / php-fpm через Apache2. Есть ли способ получить доступ к этим данным вручную? Я не могу обновить коробку (Ubuntu 10.10, php5.3.4 не поддерживается).

Я попытался подключиться, используя технику здесь: http://inode.co.nz/testing-a-fastcgi-service , но не повезло.

mikewaters
источник

Ответы:

12

Для того , чтобы загрузить страницу состояния /, вы должны иметь некоторые переменные окружения установлены, в частности: SCRIPT_NAME, SCRIPT_FILENAME, QUERY_STRING, и REQUEST_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:

Set: 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
cyberx86
источник
ЭТО СРАБОТАЛО!!! Я пробовал каждую итерацию (REQUEST_METHOD и DOCUMENT_ROOT и (SCRIPT_NAME или SCRIPT_FILENAME)). Спасибо тебе невероятно.
mikewaters