假设访问路径是:php
http://localhost/test.src/test.php/home/user/login/?user=root&pwd=111
一、$_SERVER['SCRIPT_NAME']html
它是从客户端来看、不包含域名的脚本文件路径,即:服务器
/test.src/test.php
若是你想引用脚本自身,例如把一个表单提交给本身处理时,这能够用这个。框架
" method="get">二、$_SERVER['SCRIPT_FILENAME']优化
与 $_SERVER['SCRIPT_NAME'] 不一样的是,这是代码运行时脚本文件在服务器端的绝对路径, 即:url
c:/wamp/www/test.src/test.php
说得通俗一点,这就是文件在服务器硬盘上的路径。code
三、$_SERVER['PHP_SELF']orm
与$_SERVER['SCRIPT_NAME']相似,但它还包括了后面第一个问号以前的部分,即:htm
/test.src/test.php/home/user/login/
四、$_SERVER['PATH_INFO']get
它是$_SERVER['SCRIPT_NAME']以后、第一个问号以前的内容,即:
/home/user/login/
它常常用来作为传参载体,被不少系统用来优化url路径格式,最著名的如THINKPHP框架。
可是这个变量不必定会有值,也可能不存在。
/*下面的连接形式不会有PATH_INFO变量*/
http://localhost:83/test.php/index.php
http://localhost:83/test.php/
/*下面的连接形式有PATH_INFO变量,但值为符'/' */
http://localhost:83/test.php/index.php/
http://localhost:83/test.php/index.php/?a=b$c=d
/*综上得出只要脚本文件名后下一个字符为'/',就会有变量PATH_INFO */
php.ini中的配置参数cgi.fix_pathinfo是用来对设置cgi模式下为php是否提供绝对路径信息或PATH_INFO信息。没有这个参数以前PHP设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME,没有PATH_INFO值。设置这个参数为cgi.fix_pathinfo=1后,cgi设置完整的路径信息PATH_TRANSLATED的值为SCRIPT_FILENAME,而且设置PATH_INFO信息;若是设为cgi.fix_pathinfo=0则只设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME。cgi.fix_pathinfo的默认值是1。
五、$_SERVER['QUERY_STRING']
它是第一个问号之后的内容,即:
user=root&pwd=111
六、__FILE__
__FILE__是代码定义时的脚本文件自己的绝对路径。它与$_SERVER['SCRIPT_FILENAME']有点不一样,下面看一个实例。假设a.php包含了b.php。
// 如下是test/a.php脚本中的内容:
那 么在b.php中,$_SERVER['SCRIPT_FILENAME']可能会是 /home/a88888888/public_html /test/a.php。虽然$_SERVER['SCRIPT_FILENAME']是在b.php内,但b.php是在a.php内运行的,所以获得 的是a.php的路径。而在b.php中,__FILE__可能会是 /home/a88888888/public_html/test/b.php, 这是__FILE__所处的真正位置。
七、basename()获取文件名,dirname()获取目录名,dirname($dir). '/' .basename($dir)就是指定文件在服务器端的完整路径
八、getcwd()获取当前脚本文件所在的服务器端目录路径,返回结果先后都不会有斜杠