web-dev-qa-db-ja.com

PHP-FPMステータスが空です

pm.status_path = /statusオプションを設定しました:

ubuntu:~$ cat /etc/php/7.1/fpm/pool.d/www.conf | egrep 'listen|status'
listen = /run/php/php7.1-fpm.sock
listen.owner = www-data
listen.group = www-data
pm.status_path = /status

ソケットは正しいです(そしてサイトは機能します):

ubuntu:~$ Sudo ls -la /run/php/php7.1-fpm.sock
srw-rw---- 1 www-data www-data 0 Feb  9 07:58 /run/php/php7.1-fpm.sock

しかし、このステータスページを受け取ることができません:

ubuntu:~$ SCRIPT_NAME=/status SCRIPT_FILENAME=/status \
> REQUEST_METHOD=GET Sudo cgi-fcgi -bind -connect /run/php/php7.1-fpm.sock
Content-type: text/html; charset=UTF-8

またはnginxconfigを使用します:

server {
    listen 80;
    server_name localhost;

    location /status {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    }
}

curl http://localhost/statusは空、ステータスコードは200です。
curl http://localhost/somethingは期待どおりにエラー404を返します。

この状況を解決するにはどうすればよいですか?何をチェックしますか?

1
Dmitry

PHP-FPMステータスページがnginxで正しく機能するには、次のパラメータをすべて設定する必要があります。

fastcgi_param REQUEST_METHOD    $request_method;
fastcgi_param QUERY_STRING      $query_string;
fastcgi_param SCRIPT_NAME       /status;   # see notes below
fastcgi_param SCRIPT_FILENAME   "";        # see notes below

REQUEST_METHODQUERY_STRINGinclude fastcgi_paramsによって設定されます。この構成ファイルを使用している場合は、これらを再度設定する必要はありません。

SCRIPT_NAMEの値は、PHP-FPM構成のpm.status_pathの値と一致する必要があります。

SCRIPT_FILENAMEの値は重要ではありませんが、設定する必要があります。このパラメーターを省略すると、空の応答が返されます。

4

この行を次の場所に追加する必要がありました。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
2
Dmitry