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 变量来识别请求的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章