PHP-FPM 状态为空

Dmi*_*try 1 linux ubuntu php php-fpm ubuntu-16.04

我设置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
Run Code Online (Sandbox Code Playgroud)

套接字是正确的(和站点工作):

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
Run Code Online (Sandbox Code Playgroud)

但我无法收到此状态页面:

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
Run Code Online (Sandbox Code Playgroud)

或者使用 nginx 配置:

server {
    listen 80;
    server_name localhost;

    location /status {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    }
}
Run Code Online (Sandbox Code Playgroud)

curl http://localhost/status为空,状态代码为 200。
curl http://localhost/something按预期返回错误 404。

我应该怎么做才能解决这种情况?要检查什么?

小智 5

为了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
Run Code Online (Sandbox Code Playgroud)

REQUEST_METHODQUERY_STRING通过设置include fastcgi_params。如果您正在使用此配置文件,则无需再次设置这些文件。

的值SCRIPT_NAME必须与pm.status_pathPHP-FPM 配置中的值匹配。

的值SCRIPT_FILENAME不重要,但必须设置。省略这个参数会给你一个空的响应。