首页 web服务器 正文
30

不依赖web服务器的情形下测试php-fpm

  • yiqingpeng
  • 2024-01-09
  • 2
  •  
在不依赖web服务器的情形下测试php-fpm需要借助一款工具——cgi-fcgi, 如果系统里没有这个工具的话,先安装它,
yum install fcgi # 注意别写成cgi-fcgi


安装之后,通过命令cgi-fcgi调用它。


我们可以开启php-fpm配置里的status/ping/pong参数进行简单的测试。


打开配置,vim /usr/local/php/etc/php-fpm.conf
依次开启如下配置:
pm.status_path=/status
ping.path=/ping
ping.response=pong


重启php-fpm之后,运行命令:
 env SCRIPT_FILENAME=/ping REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000
输出以下类似信息:
```
X-Powered-By: PHP/5.6.37
Content-type: text/plain;charset=UTF-8
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0


pong
```
以上说明能ping通。


还可以通过访问php-fpm内置的/status路径查看配置:
env SCRIPT_NAME=/status SCRIPT_FILENAME=/status  REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000
输出以下类似信息:
```
X-Powered-By: PHP/5.6.37
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-type: text/plain;charset=UTF-8


pool:                 www
process manager:      dynamic
start time:           09/Jan/2024:09:50:58 +0000
start since:          1239
accepted conn:        6
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
slow requests:        0
```


我们还可以通过设置环境变量QUERY_STRING=full来获取更详细的状态信息:
env SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING=full REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000


除了调用内置的脚本,还可以调用本地的php文件,如下(假设本地php脚本路径为/var/www/check_env.php):
env SCRIPT_FILENAME=/var/www/check_env.php REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000
这样就可以观测到php脚本的执行结果。
通过env命令还可以设置更多的环境变量,这些环境变量都会包含在php的全局变量$_SERVER中。比如需要传递GET参数foo=bar,可以设置环境变量QUERY_STRING=foo\=bar


除了使用GET方式测试外,还可以使用post方式,post方式一定要注意设置正确的CONTENT_LENGTH:
env SCRIPT_FILENAME=/var/www/check_env.php REQUEST_METHOD=POST CONTENT_TYPE="application/x-www-form-urlencoded" CONTENT_LENGTH=5 cgi-fcgi -bind -connect 127.0.0.1:9000 <<< "d=abc"






正在加载评论...