有趣的Nginx QUERY_STRING BUG
今天在开发一个验证签名的功能,所以需要从$_SERVER['QUERY_STRING']截取到签名前的字符串。但是开发环境中是APACHE的,生产环境是NGINX+PHP_FASTCGI,问题就从这里来了,请看下面。
NGINX下的QUERY_STRING:
[QUERY_STRING] => gateway/login/&&MemberID=110000009569680&EmpFlg=N&UserName=LIJOSHUA&EmpOrgName=&sysDate=03%2F25%2F2010+10%3A55%3A30&paSignature=6CA0B32525DEEF5A4571AE2CB7D16C326E1636E08367F8658B422B279FFA787C9206F0FFBFF1D876E5602928E0F745FB83856D12FE3DF2C5EF28A4BE1EF15D7DB6F1E0A4C841F0029F6463C0483E761789F1C9
APACHE下的QUERY_STRING:
[QUERY_STRING] => MemberID=110000009569680&EmpFlg=N&UserName=LIJOSHUA&EmpOrgName=&sysDate=03%2F25%2F2010+10%3A55%3A30&paSignature=6CA0B32525DEEF5A4571AE2CB7D16C326E1636E08367F8658B422B279FFA787C9206F0FFBFF1D876E5602928E0F745FB83856D12FE3DF2C5EF28A4BE1EF15D7DB6F1E0A4C84
用法修改:
$query_string = $_SERVER['QUERY_STRING'];
改为:
$uri = $_SERVER['REQUEST_URI'];
$arrURL = parse_url($uri);
$query_string = $arrURL['query'];


fastcgi……
nginx+php的噩梦。 这个东西让我的nginx 502 两次了。
个人认为nginx用 php-fpm 守护cgi进程比较稳定。