根据我的阅读,似乎$_SERVER['REQUEST_URI']
赢得总是正确地返回查询字符串,但是有没有人对成功率有很好的认识是什么?对于普通客户来说,它在大多数情况下是否有效?
什么(如果有的话)会导致REQUEST_URI
无法填充或不包含查询字符串?
答案 0 :(得分:6)
你问:
什么(如果有的话)会导致REQUEST_URI无法填充?
我能想到的答案:
Web服务器向PHP提供所有$_SERVER
值,因此如果服务器不提供它们,则不会设置它们。对于任何体面的Web服务器来说,这都是不太可能的,但这是可能的。
如果从命令行运行PHP程序,它将没有任何$_SERVER
值。 (如果您不担心这一点,请记住,单元测试通常是从命令行运行的,所以如果您遵循最佳实践并编写单元测试就很重要)
答案 1 :(得分:1)
什么(如果有的话)会导致REQUEST_URI无法填充?
谷歌搜索似乎表明这是IIS的情况(但那时候的情况可能不是现在):
https://bugs.launchpad.net/xibo/+bug/654536
(有一篇关于IIS修复程序的文章:http://davidwalsh.name/iis-php-server-request_uri)
以及“服务器”不是标准 Web服务器的其他情况(例如,调试服务器插件等)。
在不太知名或旧版本的网络服务器(lighthttpd,iPlanet Web Server 7.0)中注意到,但认为是。
所以我相信你可以合理地确定变量总是会被填充。当然,最好准备一个非常小的测试脚本,尽早在客户的网站上运行,以便预先警告。