PHP $_SERVER 变量来标识请求的文件

PHP $_SERVER variable to identify file requested

在 PHP $_SERVER 变量中,四个变量引用请求的文件。:

["SCRIPT_FILENAME"]=>   string(21) "/webroot/file.php"
["REQUEST_URI"]=>       string(9) "/file.php?param=valyou"
["SCRIPT_NAME"]=>       string(9) "/file.php"
["PHP_SELF"]=>          string(9) "/file.php"

Would/Could 这些数组成员中的任何一个都不是指通过 URL 请求的实际文件?例如,URL 重写,我没有经验或计划将其用于此项目。

我注意到 "REQUEST_URI" 还包括我不需要的 GET 变量。

如果您需要请求的实际文件,那么您应该使用 SCRIPT_FILENAME(绝对文件系统路径)或 SCRIPT_NAME(根目录相对文件系统路径)或...魔术常量 __FILE__ 用于当前正在执行的脚本(但这不一定是用户请求的文件)。

Would/Could any of these array members not refer to the actual file requested via URL?

是的。

虽然 PHP_SELF 指的是所请求的文件,但它还可以包含 来自 URL 的其他路径名信息 (PATH_INFO)。例如。 /file.php/foo/bar.

REQUEST_URI 是被请求的 URL,所以这可能是完全不同的。只有当请求的 URL 直接映射到文件系统路径时,这些看起来才相似。例如,如果 URL /foo 内部将 重写为 /file.php 那么 REQUEST_URI 持有 /foo,而不是 /file.php.