dirname(__FILE__)是什么意思?
作者:Luckynet 来源:原创
dirname是什么东西
dirname(string path)
dirname ( PHP
3, PHP 4, PHP 5)
dirname -- 返回路径中的目录部分
说明string dirname ( string path )
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
例子 1. dirname() 例子
<?php
$path =
"/etc/passwd";
$file
= dirname($path);
// $file is set to "/etc"
?> |
|
注: 在 PHP 4.0.3 中,dirname() 被修正为
POSIX 兼容。本质上就意味着如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把
path 中结尾的
/component(最后一个斜线以及后面部分)去掉之后的字符串。注意这意味着在老的函数返回一个空字符串的情形下你通常从 dirname()
得到的是斜线或者一个点。
dirname() 从 PHP 4.3.0 开始有所改变 请看以下例子:
<?php
// PHP 4.3.0 以前
dirname('c:/');
// 返回 '.'
// PHP 4.3.0 以后
dirname('c:/');
// 返回 'c:'
?> |
dirname() 的操作从 PHP 5.0.0 版开始是二进制安全的。
那么,__FILE__ 又是什么呢?
php中定义了一个很有用的常数,即
__file__
这个内定常数是当前php程序的就是完整路径(路径+文件名)。
即使这个文件被其他文件引用(include或require),__file__始终是它所在文件的完整路径,而不是引用它的那个文件完整路径。
请看下面例子:
/home/data/demo/test/a.php
<?php
$the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name;
//返回/home/data/demo/test/a.php
echo $the_dir;
//返回/home/data/demo/test
?> |
home/data/demo/b.php
<?hp include "test/a.php";
echo
$the_full_name; //返回/home/data/demo/test/a.php
而不是/home/data/demo/b.php
echo $the_dir;
//返回/home/data/demo/test
而不是/home/data/demo/
?> |
简单地说:
__FILE__ 返回当前 路径+文件名
dirname(__FILE__) 返回当前文件路径的 路径部分
dirname(dirname(__FILE__));得到的是文件上一层目录名(不含最后一个“/”号)
例如,当前文件是 /home/data/demo/test.php ,则
__FILE__ 得到的就是完整路径 即 /home/data/demo/test.php ,而
dirname(__FILE__)得到路径部分 即 /home/data/demo
(后面没有“/”号)
|
|