手动访问 PHP-FPM 的 /status 页面(绕过 Apache)

手动访问 PHP-FPM 的 /status 页面(绕过 Apache)

有一个PHP5.3.3 错误这不允许我通过 Apache2 查看 php-fpm 的 /status 页面。有没有办法手动访问这些数据?我无法升级该盒子(Ubuntu 10.10,不支持 php5.3.4)。

我尝试使用此处的技术进行连接:http://inode.co.nz/testing-a-fastcgi-service,但没有运气。

答案1

为了加载 /status 页面,您必须设置某些环境变量,具体来说:SCRIPT_NAMESCRIPT_FILENAMEQUERY_STRINGREQUEST_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

注意:结果特定于池。

在装有 PHP v5.3.9 的 RHEL/CentOS 6 系统上测试。

(对于使用 CentOS 的用户,需要注意的一点是 - 提供的软件包cgi-fcgi是有名的fcgi,并且可从 EPEL 获得)

另外,使用 ping 也可以实现同样的效果:

设置:ping.path = /ping(php-fpm 配置)

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

答案2

在较新的 ubuntu(例如 20)上,安装 libfcgi-bin 包apt install libfcgi-bin以获取 cgi-fcgi 命令。

相关内容