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

时间:2018-10-09 11:10:27

标签: php webserver apache2 global-variables

在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变量。

1 个答案:

答案 0 :(得分: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