有趣的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'];

    • Auron Chen
    • 04月 19th, 2010

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

  1. 还没有引用通告。