Назад | Перейти на главную страницу

Страница статуса php-fpm не отображается

Я пытаюсь получить страницу статуса php-fpm. Когда я открываю страницу статуса в веб-браузере или напрямую в fcgi, появляется сообщение «Файл не найден».

Не могли бы вы помочь - как это исправить.

# grep -ER "status|ping" /etc/php5/* | grep -v ":;"
/etc/php5/fpm/pool.d/www.conf:pm.status_path = /status
/etc/php5/fpm/pool.d/www.conf:ping.path = /ping
/etc/php5/fpm/pool.d/www.conf:ping.response = pong 

# SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING=  REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php-fpm-www.sock
Primary script unknown
Status: 404 Not Found
Content-type: text/html

File not found.

# SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php-fpm-www.sock
Primary script unknown
Status: 404 Not Found
Content-type: text/html

File not found.

У меня была та же проблема, и я просто опишу, что мне нужно, чтобы она работала. Вы не поделились подробностями о конфигурации php-fpm или nginx (если это то, что вы используете в качестве веб-сервера). Обратите внимание, что вам может потребоваться выполнить приведенные ниже инструкции с sudo / как root перед командами, чтобы иметь права на изменение файлов или перезапуск служб.

В конфигурации php-fpm

vi /etc/php-fpm.d/www.conf

Найдите директиву пути статуса и включите ее

pm.status_path = /status

Затем убедитесь, что nginx может вызвать это местоположение. В вашей конфигурации сайта nginx

vi /etc/nginx/conf.d/mysite.conf

Добавить

location ~ ^/(status|ping)$ {
     access_log off;
     #allow 127.0.0.1;
     #allow 1.2.3.4#your-ip;
     #deny all;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_pass 127.0.0.1:9000;
 }

Обратите внимание, что я закомментировал инструкции по разрешению и запрету для включения страницы состояния с любого IP-адреса. Убедитесь, что это не включено в производственной среде. Теперь перезапустите nginx и php-fpm.

sudo service nginx restart
sudo service php-fpm restart

Вызов страницы состояния из браузера теперь должен работать

Для php7.0 используйте эти коды, чтобы включить статус.

В файле по умолчанию в / etc / nginx / sites-available /

location /status {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    log_not_found off;
    }

Раскомментируйте следующую строку в www.conf (файл) в /etc/php/7.0/fpm/pool.d (расположение)

pm.status_path = /status

Перезагрузите оба nginx / php7.0

sudo systemctl restart nginx
sudo systemctl restart php7.0-fpm

Теперь в веб-браузере введите этот адрес, чтобы получить полный подробный отчет о текущих запущенных сценариях php на текущем активном веб-сервере, на котором настроен php7.0 для работы.

http://yoursite.net/status?html&full

Кроме того, убедитесь, что он защищен паролем, чтобы защитить его от злоумышленников, как описано здесь.

https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-nginx-on-ubuntu-14-04

У меня была аналогичная проблема с Ubuntu 18.04 с PHP 7.2. Обнаружено, что эти строки недавно были добавлены по умолчанию snippet/fastcgi-php.conf

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

А так как файла для pm.status_path - возвращает 404;

Итак, для меня - мне пришлось удалить include snippet/fastcgi-php.conf

Тебе еще нужно пройти REQUEST_METHOD, QUERY_STRING,SCRIPT_NAME и SCRIPT_FILENAME. Просто сделай это без snippet/fastcgi-php.conf. Часто у вас будет fastcgi.conf, который будет работать.

Просто вмешиваюсь, так как другие ответы не решили это для меня.

Все, что мне нужно было сделать (после настройки конфигурации пула fpm и nginx location) был
touch status
в корне сайта nginx.

Я не знаю, сколько из следующего необходимо, но это работает:

location ^~ /status {
    access_log off;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

^~ можно заменить на =. Проверять, выписываться https://stackoverflow.com/questions/5238377/nginx-location-priority для получения дополнительной информации

Мистеру Кьюриусу это тоже было любопытно. php-fpm заботится только о том, чтобы SCRIPT_NAME и SCRIPT_FILENAME параметры соответствуют значению pm.status_path настройка.

Таким образом, ниже указано минимальное местоположение nginx для доступа к информации о статусе:

location = /a_random_path_here_ODY1NjY3Mj/fpm-status {
    include fastcgi_params;

    #'/status' is the value of pm.status_path in /etc/php/7.1/fpm/pool.d/www.conf
    fastcgi_param SCRIPT_NAME '/status';
    fastcgi_param SCRIPT_FILENAME '/status';

    fastcgi_pass   unix:/var/run/php/php7.1-fpm.sock;
}

Явно указав значения параметров, расположение страницы состояния можно назвать как угодно и может быть на любом пути, а не только /status. Наличие случайного пути также помогает предотвратить создание ненужных записей журнала от всех видов сканеров.

Очевидно, что в производственной среде можно добавить allow/deny директивы или защиту паролем для местоположения, но вышеуказанная минимальная необходимая конфигурация.

То же самое можно сделать и для ping uri (ping.path настройка), если включено.

Если вы хотите сделать это из командной строки в debian.

как корень

watch service php5-fpm status