PHP 路径详解 dirname,realpath,__FILE__,getcwd

PHP 路径详解 dirname,realpath,__FILE__,getcwd

PHP 路径详解php __dir__,,

​比如:程序根目录在:E:wampwww 中

php __dir__

1.       获取当前文件的绝对路径(目录 + 文件名及其后缀)

如果在index.php中调用,则返回  E:wampwwwindex.php

下面再看一下,程序根目录的目录结构

php __dir__

如果在 .php中调用 则返回:E:wampwww\.php

2、()  返回当前目录的上级目录,或当前文件所在的目录 (结尾不带/)

() 一般跟联合使用,其参数可以是文件(返回文件的目录),也可以是目录(返回上一级目录)

如果在 .php中调用() 则返回

E:wampwww\    (文说件返回所在目录)

如果调用 (()) 参数先文件后目录都调用了,则返回

E:wampwww        (目录返回上级目录)

3、() 返回当前文件的绝对路径 或 相对根目录的路径

如果在 .php中调用() 则返回

E:wampwww\.php

其它参数返回值(仍然在 E:wampwww\.php 中执行 ):

(‘/’)    返回磁盘根目录    E: ()或 / (linux)

(‘./’)    返回当前所在的目录  E:wampwww\

(‘../’)    返回相对程序根目录的上级目录,即程序根目录的目录 E:wampwww

() 也可以和() 配合使用 一般还会加上几个相对路径../ (前面要加/  即:/../)

(())    返回  E:wampwww\

(().’/../’)  返回 E:wampwww

(().’/../../’)    返回    E:wampwww

示例代码:

vim /Users/homer/////doc/buy/index.php

<?php
require_once(dirname(__FILE__) . "/../doc_header.php");
echo "document.title = '隧道代理 - 产品文档 - 文档中心 - 米扑代理' ";
echo "
buy/index.php __FILE__ : " . __FILE__; echo "
buy/index.php __DIR__ : " . __DIR__; echo "
buy/index.php dirname(__FILE__) : " . dirname(__FILE__); echo "
buy/index.php dirname(dirname(__FILE__)) : " . dirname(dirname(__FILE__)); echo "
buy/index.php getcwd() : " . getcwd(); echo "
buy/index.php realpath('/') : " . realpath('/'); echo "
buy/index.php realpath(__FILE__) : " . realpath(__FILE__); echo "
buy/index.php realpath(realpath(__FILE__)) : " . realpath(realpath(__FILE__)); echo "
buy/index.php realpath('./') : " . realpath('./'); echo "
buy/index.php realpath('../') : " . realpath('../'); echo "
buy/index.php realpath('../../') : " . realpath('../../');

php __dir__

echo "
buy/index.php realpath('../../../') : " . realpath('../../../'); echo "
buy/index.php realpath('../../../../') : " . realpath('../../../../'); echo "
buy/index.php realpath('../../../../../') : " . realpath('../../../../../'); echo "
buy/index.php basename(__FILE__) : " . basename(__FILE__); echo "
buy/index.php basename(basename(__FILE__)) : " . basename(basename(__FILE__)); echo "
buy/index.php filesize(__FILE__) : " . filesize(__FILE__); echo "
buy/index.php file_exists(__FILE__) : " . file_exists(__FILE__); echo "
buy/index.php file_exists(dirname(__FILE__)) : " . file_exists(dirname(__FILE__)); echo "
buy/index.php json_encode(pathinfo(__FILE__)) : " . json_encode(pathinfo(__FILE__)); echo "
buy/index.php var_dump(pathinfo(__FILE__)) : "; var_dump(pathinfo(__FILE__)) ?>

运行结果:

注:在 index.php 当前目录下运行PHP 路径详解 dirname,realpath,__FILE__,getcwd,会影响 () 工作目录即当前目录

buy/index.php __FILE__ : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy/index.php
buy/index.php __DIR__ : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy
buy/index.php dirname(__FILE__) : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy
buy/index.php dirname(dirname(__FILE__)) : /Users/homer/Downloads/myCode/workspace/proxy_client/doc
buy/index.php getcwd() : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy
buy/index.php realpath('/') : /
buy/index.php realpath(__FILE__) : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy/index.php
buy/index.php realpath(realpath(__FILE__)) : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy/index.php
buy/index.php realpath('./') : /Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy
buy/index.php realpath('../') : /Users/homer/Downloads/myCode/workspace/proxy_client/doc
buy/index.php realpath('../../') : /Users/homer/Downloads/myCode/workspace/proxy_client
buy/index.php realpath('../../../') : /Users/homer/Downloads/myCode/workspace
buy/index.php realpath('../../../../') : /Users/homer/Downloads/myCode
buy/index.php realpath('../../../../../') : /Users/homer/Downloads
 
buy/index.php basename(__FILE__) : index.php
buy/index.php basename(basename(__FILE__)) : index.php
buy/index.php filesize(__FILE__) : 4190
buy/index.php file_exists(__FILE__) : 1
buy/index.php file_exists(dirname(__FILE__)) : 1
 
buy/index.php json_encode(pathinfo(__FILE__)) : {"dirname":"/Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy","basename":"index.php","extension":"php","filename":"index"}
buy/index.php var_dump(pathinfo(__FILE__)) :
/Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy/index.php:33:
array (size=4)
  'dirname' => string '/Users/homer/Downloads/myCode/workspace/proxy_client/doc/buy' (length=60)
  'basename' => string 'index.php' (length=9)

php __dir__

'extension' => string 'php' (length=3) 'filename' => string 'index' (length=5)

PHP  常用获取文件目录的方式

() :显示是在哪个文件(显示其目录,即工作目录)里调用此文件的目录(即当前工作目录的路径),可用来获取框架入口文件所在目录。

 :当前内容写在哪个文件就显示这个文件目录,即写着 文件的目录。

 : 当前内容写在哪个文件就显示这个文件目录+文件名,可使用()获取当前文件目录名。

文字介绍了一遍,还是一脸懵逼,没搞懂,那么就举例:

php __dir__

上图,目录关系与运行结果

1)最后运行的见上图底部: .dev/.php,即工作文件

2)被引用文件,就是当前文件,写入了着:()  和 

执行完毕 .php 工作文件后:

1)()   获取了 .php 工作文件的工作目录,即 xxx\ ( .php 工作文件在 / 目录下)

2) 当前内容写在哪个文件就显示这个文件目录,test.php 文件写着这个,就显示 test.php 文件的目录 xxx\kkk

3) 当前内容写在哪个文件就显示这个文件目录+文件名,即显示 test.php 文件的目录 xxx\kkktest.php

所以PHP 路径详解 dirname,realpath,__FILE__,getcwd,() 得到的是引入文件(工作文件)的工作路径(目录),但得到的是当前文件的实际路径(目录)

()和 比较

PHP 获取当前脚本(文件)所在目录的绝对路径,() 和 都可以实现。

那么什么情况下用 ()php __dir__,什么情况下用 呢?它们之间有什么区别?

1、功能和效率

()由两部分组成, 魔术变量和 () 函数。

是当前脚本的绝对路径,通过 () 函数后,就可以获得脚本所在目录的绝对路径。

举个栗子,有个 hello.php 文件,其部署在服务器的目录是:/home/www//hello.php

那么,

 的值就是:/home/www//hello.php

() 返回就是:/home/www//

如果我们在 hello.php 用 全局变量,就可以直接获得所在目录的绝对路径:/home/www//php __dir__,和 () 效果完全一样。

在实现同样功能的情况下,()多了一层函数调用。

结论:  比 () 在效率上有优势,推荐使用 

2、PHP版本支持

和 () 函数从 PHP 4.0.2 就开始启用。

 变量则是 PHP 5.3.0 新增的。(比较新,需考虑版本,目前php都支持了吧)

所以,如果你的PHP版本大于等于PHP 5.3.0,建议使用 。

否则,最好还是用 (),以确保程序不会出错。

参考推荐:

PHP 文件操作常用函数

PHP 常用函数总结(数组,字符串,时间,文件操作)

PHP 路径详解 ,,,

PHP 获取网页标题(title)、描述()、关键字()等meta信息

PHP 下载保存文件到本地

PHP下载远程图片

PHP抓取网站ico图标

PHP + + 抓取米扑科技首页

PHP 文件导入 , , , 区别

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » PHP 路径详解 dirname,realpath,__FILE__,getcwd

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们