代码如下,web访问后502:
将代码改为phpinfo之外的任意函数,可以执行
环境:
osX 10.12.3
Homebrew 1.1.9
nginx/1.10.2
PHP 7.1.1
PHP 7.1.1 (cli) (built: Jan 31 2017 21:43:52) ( NTS DEBUG ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
命令行中可以执行:
php -i
检查过php.ini
,没有禁止执行的函数(是空的)
disable_functions =
能检测到phpinfo
函数,但是不能执行
var_dump(function_exists('phpinfo')); // print true
nginx error log 如下:
*246 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: test4.cc, request: "GET /ini.php?a=22e243423 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "test4.cc"
请问怎么破?
是个Bug也未尝可知呢。不知道你开启了哪些扩展。phpinfo调用过程中,会遍历所有扩展以取出它们的信息用于展示,如果有扩展的提供信息函数中出现了问题,就会引起进程异常退出,反映到Nginx上就是502错误。
看php-fpm的log,php的log