Linux

PHP-FPM 狀態為空

  • August 29, 2019

我設置了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

或者使用 nginx 配置:

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。

我應該怎麼做才能解決這種情況?要檢查什麼?

為了使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_METHOD並且QUERY_STRING由 設置include fastcgi_params。如果您使用此配置文件,則無需再次設置這些。

的值SCRIPT_NAME必須與pm.status_path您的 PHP-FPM 配置中的值匹配。

的值SCRIPT_FILENAME不重要,但必須設置。省略此參數會給您一個空響應。

引用自:https://serverfault.com/questions/896469