php dirname(__FILE__) 获取当前文件的绝对路径


Posted in PHP onJune 28, 2011

PHP 常量 dirname(__file__)

__FILE__ :被称为PHP魔术常量 ,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径

1)dirname(__FILE__) 函数返回的是脚本所在在的路径。

比如文件 b.php 包含如下内容:

<?php 
$basedir = dirname(__FILE__); 
echo $basedir
//将在页面打印出一个这个文件所在绝对路径! 
?>

我做的测试得到结果: E:/website/othertest/cms

这个相当于, asp中的server.mappth的用法

如果b.php被其他目录里的a.php文件require 或者 include 去引用的话。 变量$basedir 的内容还是b.php所在的那个文件夹的路径。 而不是变成a.php文件所在的目录。

2)dirname(__FILE__) 一般会返回文件所的当前目录到系统根目录的一个目录结构。

不会返回当前的文件名称。 dirname(__FILE__) 也可能返回一个 . (当前目录) [原因是 b.php 文件在 http.conf 或者 PHP 配置开发环境的默认WEB目录下

几个 PHP 的“魔术常量”

名称 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写比如当前文件是放在(d:\www\)下,文件名是test.php。
测试的代码如下:

<?php 
echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php 
echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\ 
echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\ 
?>

使用方法提示,
dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。
如果重复一次可以把目录往上提升一个层次:
比如:$d = dirname(dirname(__FILE__));
其实就是把一个目录给dirname()做参数了.因为dirname()返回最后的目录不带\\或者是/
所以重复使用的时候可以认为 dirname() 把最下层的目录当成文件名来处理了.照常返回
当前目录的上级目录.这样重复就得到了它的上一级的目录.

包含得到上一级目录的文件
include(dirname(__FILE__).'/../filename.php');

__FILE__的路径是当前代码所在文件

dirname(dirname(__FILE__));得到的是文件上一层目录名

dirname(__FILE__);得到的是文件所在层目录名

PHP 相关文章推荐
配置最新的PHP加MYSQL服务器
Oct 09 PHP
PHP设计模式 注册表模式
Feb 05 PHP
php遍历数组的方法分享
Mar 22 PHP
php数组中删除元素的实现代码
Jun 22 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
用php如何解决大文件分片上传问题
Jul 07 PHP
php新建文件自动编号的思路与实现
Jun 27 #PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 #PHP
php开启安全模式后禁用的函数集合
Jun 26 #PHP
php设计模式 Adapter(适配器模式)
Jun 26 #PHP
php设计模式 Builder(建造者模式)
Jun 26 #PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 #PHP
php设计模式 Decorator(装饰模式)
Jun 26 #PHP
You might like
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
xml转json的js代码
2012/08/28 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
详解Node 定时器
2018/02/26 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python opencv 直方图反向投影的方法
2018/02/24 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
数据库笔试题
2013/05/09 面试题
本科毕业生自荐信
2014/06/02 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android