PHP $_SERVER 变量来识别请求的文件[重复]

Posted

技术标签:

【中文标题】PHP $_SERVER 变量来识别请求的文件[重复]【英文标题】:PHP $_SERVER variable to identify file requested [duplicate] 【发布时间】:2019-03-14 03:34:40 【问题描述】:

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"

这些数组成员中的任何一个会/可以不引用通过 URL 请求的实际文件吗?例如,URL 重写,我没有经验或计划在这个项目中使用。

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

【问题讨论】:

$_SERVER 中元素的完整列表(带有简洁的描述)可以在PHP docs 中找到 谢谢。该文档并没有真正提供有关变量的大量信息。它确实简短地提到了 URL 重写,但没有完全解决我的问题。 【参考方案1】:

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

这些数组成员中的任何一个会/可以不引用通过 URL 请求的实际文件吗?

是的。

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

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

【讨论】:

以上是关于PHP $_SERVER 变量来识别请求的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

$_SERVER[]数组解析

PHP超级全局变量魔术变量和魔术函数

PHP超级全局变量魔术变量和魔术函数

使用 PHP 将 WWW 重定向到非 WWW 重定向

PHP详解$_SEVER常用变量

php 全局变量 预定义变量