文件位置相关函数解析

这里我以TP5框架做举例测试输出,网站所在服务器绝对路径为:/var/www/TP5

然后网站的入口文件改在网站项目根目录下,也就是   TP5/index.php

然后输出语句在 TP5/application/index/controller/Index.php 控制器中的index方法中输出

(1)__DIR__       当前内容写在哪个文件就显示这个文件的绝对路径目录

如dump(__DIR__)     输出:/var/www/TP5/application/index/controller

(2)__FILE__    当前内容写在哪个文件就显示这个文件的绝对路径目录+文件名

如dump(__FILE__)     输出:/var/www/TP5/application/index/controller/Index.php

(3)getcwd() :显示是 在哪个文件里调用此文件 的绝对路径目录,返回当前工作目录。

如dump(getcwd())     输出: /var/www/TP5

(4)dirname() 函数返回路径中的目录部分,括号内需要写路径参数。

echo dirname("c:/testweb/home.php");     输出:c:/testweb

echo dirname("/testweb/home/ceshi/");    输出:/testweb/home

echo dirname("/testweb/home/ceshi");     输出:/testweb/home

 dirname(__DIR__)      因为上面看到__DIR__是/var/www/TP5/application/index/controller,所以输出:/var/www/TP5/application/index

dirname(__FILE__)和__DIR__比较:都是获取文件所在的绝对路径目录

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

__DIR__ 变量则是 PHP5.3.0 新增的。

(5)basename() 函数,返回路径中的文件名部分。

basename()和dirname()有点相反的性质,basename只获取文件名部分,去掉前面目录的路径部分。

basename(path,suffix)  suffix 可选。规定文件扩展名。如果文件有 suffix,则不会输出这个扩展名。

举例:

$path = "/testweb/home.php";  

 echo basename($path);   输出:home.php

 echo basename($path,".php");  输出:home

$path = "/testweb/home";   输出:home

(6)pathinfo() 函数,以数组的形式返回文件路径的信息。

dump(pathinfo('C:/aa/bb/test.txt'));

输出:

array(4) {  

["dirname"] => string(8) "C:/aa/bb"  

["basename"] => string(8) "test.txt"  

["extension"] => string(3) "txt"  

["filename"] => string(4) "test"

}

(7)$_SERVER['SCRIPT_FILENAME']  , 指向当前执行脚本的绝对路径;

有点类似 __FILE__ ,区别是 __FILE__是这句代码写在哪个文件就显示这个文件的绝对路径。

而$_SERVER['SCRIPT_FILENAME']是执行脚本的绝对路径。

举例:

a.php文件和common文件夹同级,假设都在根目录下。common文件夹下面有个b.php文件。

//a.php中代码

require 'common/b.php';
//b.php中代码
echo  $_SERVER['SCRIPT_FILENAME']; 
echo '<br />'; 
echo  __FILE__; 

执行a.php文件,输出结果是

/a.php

/common/b.php

(8)DIRECTORY_SEPARATOR,显示系统分隔符的命令。

在windows下路径分隔符是\,在linux上路径的分隔符是/,所以上面php常量可以解决系统不同的错误。

可以在文件路径后面拼接这个php常量就可以。

如定义某个路径:

define(‘ROOT’, __DIR__.'upload/');

为了不报错,可以这样写:

define(‘ROOT’, __DIR__.DIRECTORY_SEPARATOR.'upload/');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值