6

从我读过的内容来看,似乎$_SERVER['REQUEST_URI']并不总是能正确返回查询字符串,但有人对成功率有很好的了解吗?它在大多数情况下对普通客户有用吗?

如果有的话,什么会导致REQUEST_URI不填充或不包含查询字符串?

4

2 回答 2

6

您询问:

如果有的话,什么会导致 REQUEST_URI 不被填充?

我能想到的答案:

  1. Web 服务器$_SERVER向 PHP 提供所有值,因此如果服务器不提供它们,则不会设置它们。这对于任何体面的 Web 服务器来说都是极不可能的,但这是可能的。

  2. 如果从命令行运行 PHP 程序,它不会有任何$_SERVER值。(如果您不担心这一点,请记住单元测试通常是从命令行运行的,因此您是否遵循最佳实践并编写单元测试很重要)

于 2012-10-07T21:17:50.613 回答
1

如果有的话,什么会导致 REQUEST_URI 不被填充?

谷歌搜索似乎表明 IIS 就是这种情况(但当时是真的,现在可能不是):

https://bugs.launchpad.net/xibo/+bug/654536

(有一篇关于 IIS 修复的文章:http: //davidwalsh.name/iis-php-server-request_uri

以及“服务器”不是您的标准Web 服务器的其他情况(例如调试服务器插件等)。

它被注意到但被认为是不太为人所知或旧版本的 Web 服务器(lighthttpd、iPlanet Web Server 7.0)中的一个错误。

所以我相信你可以合理地确定变量总是会被填充。当然,明智的做法是尽早准备一个非常小的测试脚本在客户的站点上运行,以便得到预警。

于 2012-10-07T21:28:16.617 回答