作为一个phper,一开始学习的时候,可能都接触过绝对路径和相对路径,但是也可能很多没学基础的人,直接撸tp去了,根本不了解路径,一遇到问题就两眼一抹黑瞎几把问,所以,今天就来讲讲关于路径的事吧.
绝对路径是指从根目录开始的路径,根目录的定义根据环境的不同而不同 在windows中,根目录以盘符开始,例如:"E:\tioncico\www\es_demo1.php"
在linux中,根目录直接是系统的根目录,例如:"/www/work/es_demo1/index.php"
在url域名中,根目录由网址开始,例如:"www.php20.cn/admin/index.php"
如以上这种情况,直接从根目录开始的路径,就是绝对路径.
绝对路径除了从根目录开始的写法,还可以直接通过'/'字符串开头,可直接代表根目录,同样,根目录根据环境的不同而不同
例如:"/work/www/es_demo/index.php".
在windows中,代表着"盘符:\work\www\es_demo\index.php";(windows目录分隔符是\)
在linux环境中,代表着"/work/www/es_demo/index.php".
在url域名中,代表着:"域名/work/www/es_demo/index.php".
例如:
<?php
echo getcwd();
在windows中:
在linux中:
如上就是绝对路径的说明以及2种写法
相对路径是指从当前路径开始计算的路径,它的写法是用"./"代表当前目录,然后进行计算目录
例如,当前位置是"/www/work/es_demo1/index.php"
例如以下目录结构:
在index.php中,调用test.txt,和test2.txt的写法如下:
<?php
echo "所在目录:".getcwd()."<br>";
$testTxtAbsolute1 = '/tioncico/othe/a.cn/test.txt';//绝对路径写法
$testTxtAbsolute2 = 'E:/tioncico/othe/a.cn/test.txt';//绝对路径写法
$testTxtRelative = './test.txt';//相对路径写法
echo file_get_contents($testTxtAbsolute1),"<br>";
echo file_get_contents($testTxtAbsolute2),"<br>";
echo file_get_contents($testTxtRelative),"<br>";
$test2TxtAbsolute1 = '/tioncico/othe/a.cn/test2/test2.txt';//绝对路径写法
$test2TxtAbsolute2 = 'E:/tioncico/othe/a.cn/test2/test2.txt';//绝对路径写法
$test2TxtRelative = './test2/test2.txt';//相对路径写法
echo file_get_contents($test2TxtAbsolute1),"<br>";
echo file_get_contents($test2TxtAbsolute2),"<br>";
echo file_get_contents($test2TxtRelative),"<br>";
同样,我们可以使用"../"来表示上级目录
在test3.php中,使用"../"来调用test.txt和test2.txt写法如下:
<?php
echo "所在目录:".getcwd()."<br>";
$testTxtRelative = '../test.txt';//相对路径写法
echo file_get_contents($testTxtRelative),"<br>";
$test2TxtRelative = '../test2/test2.txt';//相对路径写法
echo file_get_contents($test2TxtRelative),"<br>";
我们还可以用"../../"来表示父级的父级,这里不多做说明
很多人搞不清楚根据环境下,路径的问题,我根据平时的经验,将phper能遇上的路径环境都区分了出来,具体可分为:
关于php下的绝对路径问题,如果index.php调用test.php,在test.php获取路径,以及操作相对路径,那这个路径是以index.php为准还是以test.php为准呢?我们新建一个以下的目录结构:
在index.php引入test.php:
<?php
/**
* Created by PhpStorm.
* User: Apple
* Date: 2018/11/30 0030
* Time: 11:46
*/
include "./test/test2/test.php";
在test.php调用test.txt以及输出目录:
<?php
/**
* Created by PhpStorm.
* User: Apple
* Date: 2018/11/30 0030
* Time: 11:47
*/
echo "你的路径是:".getcwd()."<br>";
echo file_get_contents("../../test.txt");
echo file_get_contents("./test.txt");
调用index.php 输出结果:
很明显,路径是以调用的文件为基准的.那该如何获取到test.php的目录呢?
可通过__DIR__常量获取当前文件目录