__FILE__与__DIR__与 getcwd()与$_SERVER['SCRIPT_FILENAME']之间的区别
2017-02-28 22:35
417 查看
要获取当前php脚本所在目录的绝对路径,可以下面通过四个方法:
1、 __FILE__
2、 __DIR__
3、getcwd()
4、$_SERVER[‘SCRIPT_FILENAME’]
下面通过实例来说明之间的区别:
脚本路径:D:\Soft\xampp\htdocs\test\test.php,代码如下:
脚本路径:D:\Soft\xampp\htdocs\test\include\inc.php,代码如下:
运行结果如下:
结论:
getcwd()获取的是当前运行脚本的目录,不管getcwd()是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。
__FILE__获取的是文件名称,如果用在被包含文件中,则返回被包含的文件名,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称。
__DIR__获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。
$_SERVER[‘SCRIPT_FILENAME’]获取的是当前运行脚本名称,不管$_SERVER[‘SCRIPT_FILENAME’]是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。
区别:
dirname($_SERVER[‘SCRIPT_FILENAME’])与getcwd()效果一样,是获取当前运行脚本的目录。
dirname(__FILE__)与__DIR__效果一样,获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。__DIR__是php5.3.0之后新增的,dirname与__FILE__是php4.0.2开始启用,效率上来说__DIR__比dirname(__FILE__)更高,如果php版本是5.3以上的,建议使用__DIR__,否则还是使用dirname(__FILE__)合适,避免程序出错。
1、 __FILE__
2、 __DIR__
3、getcwd()
4、$_SERVER[‘SCRIPT_FILENAME’]
下面通过实例来说明之间的区别:
脚本路径:D:\Soft\xampp\htdocs\test\test.php,代码如下:
<?php //PHP获取绝对路径方法比较 //__FILE__ vs __DIR__ vs getcwd() vs $_SERVER['SCRIPT_FILENAME'] echo '===============当前执行脚本=================<br/>'; $a = __FILE__; $b = __DIR__; $c = getcwd(); $d = $_SERVER['SCRIPT_FILENAME']; echo '__FILE__='.$a.'<br/&g ab2b t;'; echo '__DIR__='.$b.'<br/>'; echo 'getcwd()='.$c.'<br/>'; echo '$_SERVER["SCRIPT_FILENAME"]='.$d.'<br/>'; echo '===============被包含文件===================<br/>'; include 'include/inc.php'; ?>
脚本路径:D:\Soft\xampp\htdocs\test\include\inc.php,代码如下:
<?php //PHP获取绝对路径方法比较 //__FILE__ vs __DIR__ vs getcwd() vs $_SERVER['SCRIPT_FILENAME'] $a = __FILE__; $b = __DIR__; $c = getcwd(); $d = $_SERVER['SCRIPT_FILENAME']; echo '__FILE__='.$a.'<br/>'; echo '__DIR__='.$b.'<br/>'; echo 'getcwd()='.$c.'<br/>'; echo '$_SERVER["SCRIPT_FILENAME"]='.$d; ?>
运行结果如下:
===============当前执行脚本================= __FILE__=D:\Soft\xampp\htdocs\test\test.php __DIR__=D:\Soft\xampp\htdocs\test getcwd()=D:\Soft\xampp\htdocs\test $_SERVER["SCRIPT_FILENAME"]=D:/Soft/xampp/htdocs/test/test.php ===============被包含文件=================== __FILE__=D:\Soft\xampp\htdocs\test\include\inc.php __DIR__=D:\Soft\xampp\htdocs\test\include getcwd()=D:\Soft\xampp\htdocs\test $_SERVER["SCRIPT_FILENAME"]=D:/Soft/xampp/htdocs/test/test.php 复制代码
结论:
getcwd()获取的是当前运行脚本的目录,不管getcwd()是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。
__FILE__获取的是文件名称,如果用在被包含文件中,则返回被包含的文件名,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称。
__DIR__获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。
$_SERVER[‘SCRIPT_FILENAME’]获取的是当前运行脚本名称,不管$_SERVER[‘SCRIPT_FILENAME’]是在被包含的文件里面还是在当前执行脚本文件里面,运行的结果不会发生任何变化。
区别:
dirname($_SERVER[‘SCRIPT_FILENAME’])与getcwd()效果一样,是获取当前运行脚本的目录。
dirname(__FILE__)与__DIR__效果一样,获取的是文件名称目录,如果用在被包含文件中,则返回被包含的文件名目录,如果直接用在当前运行脚本里面,则返回运行脚本的文件名称目录。__DIR__是php5.3.0之后新增的,dirname与__FILE__是php4.0.2开始启用,效率上来说__DIR__比dirname(__FILE__)更高,如果php版本是5.3以上的,建议使用__DIR__,否则还是使用dirname(__FILE__)合适,避免程序出错。
相关文章推荐
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- 146.PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- __FILE__与$_SERVER['SCRIPT_FILENAME']的区别
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别
- $_SERVER['SCRIPT_FILENAME'] 和__FILE__ 用法区别
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- __FILE__ $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['SCRIPT_FILENAME'] 的区别
- php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别
- PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
- PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
- PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
- $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 区别