php应用路径变量问题总结
实际效果测试,不考虑原理!
本地服务器,域名http://d.com,根路径D:\phpnow\vhosts\d.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:\phpnow\vhosts\d.com.yii\x.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:\phpnow\vhosts\d.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:\phpnow\vhosts\d.com.yii\a\a.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:\phpnow\vhosts\d.com.yii\a】//实际执行代码的所在目录
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:\phpnow\vhosts\d.com.yii\a\b\b.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:\phpnow\vhosts\d.com.yii\a\b】//实际执行代码的所在目录
直接访问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:\phpnow\vhosts\d.com.yii\a\a.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:\phpnow\vhosts\d.com.yii\a】//实际执行代码的所在目录
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:\phpnow\vhosts\d.com.yii\a\b\b.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:\phpnow\vhosts\d.com.yii\a\b】//实际执行代码的所在目录
源码
/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/>";