Nginx/PHP Fastcgi PATH_INFO的一个问题

风雪之隅 发布于2010-01-20 00:24 | 226次阅读 | 字体: 打印预览


作者: laruence(http://www.laruence.com) 本文地址: http://www.laruence.com/2010/01/20/1247.html 转载请注明出处

通过在nginx.conf中模拟PATH_INFO的方法会有一个bug. 那就是PATH_INFO不会被urldecode.

对于Apache+PHP(php2handler)来说, PATH_INFO来自Apache, 不会有问题, 对于Apache fastcgi也应该没有问题, 因为PATH_INFO也是由Apache生成.

但是对于nginx+fastcgi, 因为对于cgi来说PATH_INFO来自于ENV(fastcgi_params), 而php-cgi中的import_environment_variables不会对ENV中的变量做urldecode.

这样, nginx看到的url是urlencode以后的, 从url中分离出来的PATH_INFO也是urlencode后的, forward给php proxy以后, PHP看到的PATH_INFO也是urlencode的了.

所以, 如果在PATH_INFO中包含一些宽字符, 或者是”+”, 那就要注意了, 需要我们主动的urldecode一下再使用.

Comments2010/03/01, verdana writes: 尝试一下 fastcgi_split_path_infoCopyright

本文出处 : http://www.laruence.com/2010/01/20/1247.html end

上一篇:IE下var的重要性的又一佐证

下一篇:杨家溪露营+太姥山钻洞