php应用路径变量问题总结

实际效果测试,不考虑原理!

本地服务器,域名http://d.com,根路径D:phpnowvhostsd.com.yii,相对根目录拥有文件/x.php代码里requeir_once /a/a.php,而/a/a.php又requeir_once /a/b/b.php

直接访问http://d.com/x.php/x/y/z.html?a=b&c=d的结果

/x.php


$_SERVER["HTTP_HOST"]:【d.com】//当前请求的 Host:即域名信信息

$_SERVER["PHP_SELF"]:【/x.php/x/y/z.html】//请求执行文件的相对地址
$_SERVER["SCRIPT_NAME"]:【/x.php】//实际执行文件相对地址
$_SERVER["SCRIPT_FILENAME"]:【D:/phpnow/vhosts/d.com.yii/x.php】//实际执行文件的绝对路径
__FILE__ :【D:phpnowvhostsd.com.yiix.php】//实际执行代码的绝对路径

$_SERVER["REQUEST_URI"]:【/x.php/x/y/z.html?a=b&c=d】//url请求中包括/和之后的所有内容。
$_SERVER["QUERY_STRING"]:【a=b&c=d】//url请求中?之后的内容。

$_SERVER["DOCUMENT_ROOT"]:【D:/phpnow/vhosts/d.com.yii】//文档根目录。在服务器配置文件中定义

basename($_SERVER["PHP_SELF"]):【z.html】//请求执行文件的文件名
basename($_SERVER["SCRIPT_NAME"]):【x.php】//实际执行文件文件名
basename($_SERVER["SCRIPT_FILENAME"]):【x.php】//实际执行文件文件名
basename(__FILE__):【x.php】//实际执行代码文件名

dirname($_SERVER["PHP_SELF"]):【/x.php/x/y】//请求执行文件的所在目录
dirname($_SERVER["SCRIPT_NAME"]):【】//实际执行文件所在目录
dirname($_SERVER["SCRIPT_FILENAME"]):【D:/phpnow/vhosts/d.com.yii】//实际执行文件所在目录
dirname(__FILE__):【D:phpnowvhostsd.com.yii】//实际执行代码所在目录

require_once /a/a.php


$_SERVER["HTTP_HOST"]:【d.com】//当前请求的 Host:即域名信信息

$_SERVER["PHP_SELF"]:【/x.php/x/y/z.html】//请求执行文件的相对地址
$_SERVER["SCRIPT_NAME"]:【/x.php】//实际执行文件相对地址
$_SERVER["SCRIPT_FILENAME"]:【D:/phpnow/vhosts/d.com.yii/x.php】//实际执行文件的绝对路径
__FILE__ :【D:phpnowvhostsd.com.yiiaa.php】//实际执行代码的绝对路径

$_SERVER["REQUEST_URI"]:【/x.php/x/y/z.html?a=b&c=d】//url请求中包括/和之后的所有内容。
$_SERVER["QUERY_STRING"]:【a=b&c=d】//url请求中?之后的内容。

$_SERVER["DOCUMENT_ROOT"]:【D:/phpnow/vhosts/d.com.yii】//文档根目录。在服务器配置文件中定义

basename($_SERVER["PHP_SELF"]):【z.html】//请求执行文件的文件名
basename($_SERVER["SCRIPT_NAME"]):【x.php】//实际执行文件文件名
basename($_SERVER["SCRIPT_FILENAME"]):【x.php】//实际执行文件文件名
basename(__FILE__):【a.php】//实际执行代码文件名

dirname($_SERVER["PHP_SELF"]):【/x.php/x/y】//请求执行文件的所在目录
dirname($_SERVER["SCRIPT_NAME"]):【】//实际执行文件所在目录
dirname($_SERVER["SCRIPT_FILENAME"]):【D:/phpnow/vhosts/d.com.yii】//实际执行文件所在目录
dirname(__FILE__):【D:phpnowvhostsd.com.yiia】//实际执行代码所在目录

require_once /a/b/b.php


$_SERVER["HTTP_HOST"]:【d.com】//当前请求的 Host:即域名信信息

$_SERVER["PHP_SELF"]:【/x.php/x/y/z.html】//请求执行文件的相对地址
$_SERVER["SCRIPT_NAME"]:【/x.php】//实际执行文件相对地址
$_SERVER["SCRIPT_FILENAME"]:【D:/phpnow/vhosts/d.com.yii/x.php】//实际执行文件的绝对路径
__FILE__ :【D:phpnowvhostsd.com.yiia.php】//实际执行代码的绝对路径

$_SERVER["REQUEST_URI"]:【/x.php/x/y/z.html?a=b&c=d】//url请求中包括/和之后的所有内容。
$_SERVER["QUERY_STRING"]:【a=b&c=d】//url请求中?之后的内容。

$_SERVER["DOCUMENT_ROOT"]:【D:/phpnow/vhosts/d.com.yii】//文档根目录。在服务器配置文件中定义

basename($_SERVER["PHP_SELF"]):【z.html】//请求执行文件的文件名
basename($_SERVER["SCRIPT_NAME"]):【x.php】//实际执行文件文件名
basename($_SERVER["SCRIPT_FILENAME"]):【x.php】//实际执行文件文件名
basename(__FILE__):【b.php】//实际执行代码文件名

dirname($_SERVER["PHP_SELF"]):【/x.php/x/y】//请求执行文件的所在目录
dirname($_SERVER["SCRIPT_NAME"]):【】//实际执行文件所在目录
dirname($_SERVER["SCRIPT_FILENAME"]):【D:/phpnow/vhosts/d.com.yii】//实际执行文件所在目录
dirname(__FILE__):【D:phpnowvhostsd.com.yiia】//实际执行代码所在目录

直接访问http://d.com/a/a.php/x/y/z.html?a=b&c=d的结果 

/a/a.php


$_SERVER["HTTP_HOST"]:【d.com】//当前请求的 Host:即域名信信息

$_SERVER["PHP_SELF"]:【/a/a.php/x/y/z.html】//请求执行文件的相对地址
$_SERVER["SCRIPT_NAME"]:【/a/a.php】//实际执行文件相对地址
$_SERVER["SCRIPT_FILENAME"]:【D:/phpnow/vhosts/d.com.yii/a/a.php】//实际执行文件的绝对路径
__FILE__ :【D:phpnowvhostsd.com.yiiaa.php】//实际执行代码的绝对路径

$_SERVER["REQUEST_URI"]:【/a/a.php/x/y/z.html?a=b&c=d】//url请求中包括/和之后的所有内容。
$_SERVER["QUERY_STRING"]:【a=b&c=d】//url请求中?之后的内容。

$_SERVER["DOCUMENT_ROOT"]:【D:/phpnow/vhosts/d.com.yii】//文档根目录。在服务器配置文件中定义

basename($_SERVER["PHP_SELF"]):【z.html】//请求执行文件的文件名
basename($_SERVER["SCRIPT_NAME"]):【a.php】//实际执行文件文件名
basename($_SERVER["SCRIPT_FILENAME"]):【a.php】//实际执行文件文件名
basename(__FILE__):【a.php】//实际执行代码文件名

dirname($_SERVER["PHP_SELF"]):【/a/a.php/x/y】//请求执行文件的所在目录
dirname($_SERVER["SCRIPT_NAME"]):【/a】//实际执行文件所在目录
dirname($_SERVER["SCRIPT_FILENAME"]):【D:/phpnow/vhosts/d.com.yii/a】//实际执行文件所在目录
dirname(__FILE__):【D:phpnowvhostsd.com.yiia】//实际执行代码所在目录

require_once /a/b/b.php


$_SERVER["HTTP_HOST"]:【d.com】//当前请求的 Host:即域名信信息

$_SERVER["PHP_SELF"]:【/a/a.php/x/y/z.html】//请求执行文件的相对地址
$_SERVER["SCRIPT_NAME"]:【/a/a.php】//实际执行文件相对地址
$_SERVER["SCRIPT_FILENAME"]:【D:/phpnow/vhosts/d.com.yii/a/a.php】//实际执行文件的绝对路径
__FILE__ :【D:phpnowvhostsd.com.yiia.php】//实际执行代码的绝对路径

$_SERVER["REQUEST_URI"]:【/a/a.php/x/y/z.html?a=b&c=d】//url请求中包括/和之后的所有内容。
$_SERVER["QUERY_STRING"]:【a=b&c=d】//url请求中?之后的内容。

$_SERVER["DOCUMENT_ROOT"]:【D:/phpnow/vhosts/d.com.yii】//文档根目录。在服务器配置文件中定义

basename($_SERVER["PHP_SELF"]):【z.html】//请求执行文件的文件名
basename($_SERVER["SCRIPT_NAME"]):【a.php】//实际执行文件文件名
basename($_SERVER["SCRIPT_FILENAME"]):【a.php】//实际执行文件文件名
basename(__FILE__):【b.php】//实际执行代码文件名

dirname($_SERVER["PHP_SELF"]):【/a/a.php/x/y】//请求执行文件的所在目录
dirname($_SERVER["SCRIPT_NAME"]):【/a】//实际执行文件所在目录
dirname($_SERVER["SCRIPT_FILENAME"]):【D:/phpnow/vhosts/d.com.yii/a】//实际执行文件所在目录
dirname(__FILE__):【D:phpnowvhostsd.com.yiia】//实际执行代码所在目录

源码

/x.php

<?php
echo "<br/>/x.php<hr/>";

echo '$_SERVER["HTTP_HOST"]:【',$_SERVER['HTTP_HOST'],"】//当前请求的 Host:即域名信信息","<br/>";
echo '<br/>';
echo '$_SERVER["PHP_SELF"]:【<font color="#EE00EE">',$_SERVER['PHP_SELF'],"</font>】//<font color='green'>请求执行文件的</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_NAME"]:【',$_SERVER['SCRIPT_NAME'],"】//<font color='green'>实际执行文件</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_FILENAME"]:【',$_SERVER['SCRIPT_FILENAME'],"】//<font color='green'>实际执行文件的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '__FILE__ :【<font color="#EE00EE">',__FILE__ ,"</font>】//<font color='green'>实际执行代码的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '<br/>';
echo '$_SERVER["REQUEST_URI"]:【',$_SERVER['REQUEST_URI'],"】//url请求中包括/和之后的所有内容。","<br/>";
echo '$_SERVER["QUERY_STRING"]:【',$_SERVER['QUERY_STRING'],"】//url请求中?之后的内容。","<br/>";
echo '<br/>';
echo '$_SERVER["DOCUMENT_ROOT"]:【',$_SERVER['DOCUMENT_ROOT'],"】//文档根目录。在服务器配置文件中定义","<br/>";
echo "<br/>";


echo 'basename($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',basename($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_NAME"]):【',basename($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_FILENAME"]):【',basename($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename(__FILE__):【<font color="#EE00EE">',basename(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>文件名</font>","<br/>";
//echo 'basename($_SERVER["ORIG_SCRIPT_NAME"]):【',basename($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";


echo 'dirname($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',dirname($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_NAME"]):【',dirname($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_FILENAME"]):【',dirname($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname(__FILE__):【<font color="#EE00EE">',dirname(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>所在目录</font>","<br/>";
//echo 'dirname($_SERVER["ORIG_SCRIPT_NAME"]):【',dirname($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";

echo "require_once ";
require_once("a/a.php");

/a/a.php

<?php
echo "/a/a.php<hr/>";

echo '$_SERVER["HTTP_HOST"]:【',$_SERVER['HTTP_HOST'],"】//当前请求的 Host:即域名信信息","<br/>";
echo '<br/>';
echo '$_SERVER["PHP_SELF"]:【<font color="#EE00EE">',$_SERVER['PHP_SELF'],"</font>】//<font color='green'>请求执行文件的</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_NAME"]:【',$_SERVER['SCRIPT_NAME'],"】//<font color='green'>实际执行文件</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_FILENAME"]:【',$_SERVER['SCRIPT_FILENAME'],"】//<font color='green'>实际执行文件的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '__FILE__ :【<font color="#EE00EE">',__FILE__ ,"</font>】//<font color='green'>实际执行代码的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '<br/>';
echo '$_SERVER["REQUEST_URI"]:【',$_SERVER['REQUEST_URI'],"】//url请求中包括/和之后的所有内容。","<br/>";
echo '$_SERVER["QUERY_STRING"]:【',$_SERVER['QUERY_STRING'],"】//url请求中?之后的内容。","<br/>";
echo '<br/>';
echo '$_SERVER["DOCUMENT_ROOT"]:【',$_SERVER['DOCUMENT_ROOT'],"】//文档根目录。在服务器配置文件中定义","<br/>";
echo "<br/>";


echo 'basename($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',basename($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_NAME"]):【',basename($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_FILENAME"]):【',basename($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename(__FILE__):【<font color="#EE00EE">',basename(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>文件名</font>","<br/>";
//echo 'basename($_SERVER["ORIG_SCRIPT_NAME"]):【',basename($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";


echo 'dirname($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',dirname($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_NAME"]):【',dirname($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_FILENAME"]):【',dirname($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname(__FILE__):【<font color="#EE00EE">',dirname(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>所在目录</font>","<br/>";
//echo 'dirname($_SERVER["ORIG_SCRIPT_NAME"]):【',dirname($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";

echo "require_once ";
require_once("b/b.php");

/a/b/php

<?php
echo "/a/b/b.php<hr/>";

echo '$_SERVER["HTTP_HOST"]:【',$_SERVER['HTTP_HOST'],"】//当前请求的 Host:即域名信信息","<br/>";
echo '<br/>';
echo '$_SERVER["PHP_SELF"]:【<font color="#EE00EE">',$_SERVER['PHP_SELF'],"</font>】//<font color='green'>请求执行文件的</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_NAME"]:【',$_SERVER['SCRIPT_NAME'],"】//<font color='green'>实际执行文件</font><font color='red'>相对</font><font color='blue'>地址</font>","<br/>";
echo '$_SERVER["SCRIPT_FILENAME"]:【',$_SERVER['SCRIPT_FILENAME'],"】//<font color='green'>实际执行文件的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '__FILE__ :【<font color="#EE00EE">',__FILE__ ,"</font>】//<font color='green'>实际执行代码的</font><font color='red'>绝对</font><font color='blue'>路径</font>。","<br/>";
echo '<br/>';
echo '$_SERVER["REQUEST_URI"]:【',$_SERVER['REQUEST_URI'],"】//url请求中包括/和之后的所有内容。","<br/>";
echo '$_SERVER["QUERY_STRING"]:【',$_SERVER['QUERY_STRING'],"】//url请求中?之后的内容。","<br/>";
echo '<br/>';
echo '$_SERVER["DOCUMENT_ROOT"]:【',$_SERVER['DOCUMENT_ROOT'],"】//文档根目录。在服务器配置文件中定义","<br/>";
echo "<br/>";


echo 'basename($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',basename($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_NAME"]):【',basename($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename($_SERVER["SCRIPT_FILENAME"]):【',basename($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>文件名</font>","<br/>";
echo 'basename(__FILE__):【<font color="#EE00EE">',basename(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>文件名</font>","<br/>";
//echo 'basename($_SERVER["ORIG_SCRIPT_NAME"]):【',basename($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";


echo 'dirname($_SERVER["PHP_SELF"]):【<font color="#EE00EE">',dirname($_SERVER['PHP_SELF']),"</font>】//<font color='green'>请求执行文件的</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_NAME"]):【',dirname($_SERVER['SCRIPT_NAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname($_SERVER["SCRIPT_FILENAME"]):【',dirname($_SERVER['SCRIPT_FILENAME']),"】//<font color='green'>实际执行文件</font>的<font color='blue'>所在目录</font>","<br/>";
echo 'dirname(__FILE__):【<font color="#EE00EE">',dirname(__FILE__),"</font>】//<font color='green'>实际执行代码</font>的<font color='blue'>所在目录</font>","<br/>";
//echo 'dirname($_SERVER["ORIG_SCRIPT_NAME"]):【',dirname($_SERVER['ORIG_SCRIPT_NAME']),"】//如果PHP通过CGI来运行,这个变量的值就是/Php/Php.exe 如果Apache将PHP脚本作为模块来运行,该变量的值应该是/Phptest.php","<br/>";
echo "<br/>";
原文地址:https://www.cnblogs.com/forthxu/p/3232505.html