萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中相對路徑及絕對路徑的使用

php中相對路徑及絕對路徑的使用

相對路徑及絕對路徑在php中我們常用到了對於相對路徑及絕對路徑具體什麼時候使用有什麼區別我們在這裡來看一篇教程。

前言

最近老是看到有人踩在路徑的坑上面了,感覺有一點必要來說說相對路徑的一些坑,以及絕對路徑的使用

問題描述

首先我們先來看一下我們這個例子的目錄結構

 

以及這三個文件的內容

a.php
<?php
include './c/d.php'
b.php
<?php
define('__B', 'this is a test');
c/d.php
<?php
include '../b.php';
var_dump(__B);

在c目錄下面的d.php文件引用了它的上級目錄下的b.php文件
單獨運行c/d.php的時候不會出問題

 

但是,如果在和b同級目錄下的a.php引用c/d.php的話就會出問題了

 

它報錯說的是文件不存在
思考

大概意思就是a.php把c/d.php引入到a.php中後,include '../b.php'這個路徑就是相對於a.php來說的了,然後對於a.php來說的這個相對路徑它是不存在的,所以就出現了這個問題
如果一個文件可能在多個地方被引用的時候使用相對路徑就相當容易出問題,然後我們使用絕對路徑能夠輕松解決這個問題。

使用絕對路徑解決問題

如果我們把文件改成如下內容

a.php
<?php
include __DIR__.'/../b.php';
var_dump(__B);
b.php
<?php
define('__B', 'this is a test');
c/d.php
<?php
include __DIR__.'/../b.php';
var_dump(__B);

這樣就改成了對文件的絕對路徑進行引用了,__DIR__是php5.3開始中就有的預定義的魔術常量,表示這個文件所在的目錄,然後我們利用這個來可以寫出絕對路徑,在運行a.php和c/d.php的時候都能夠正常執行了,如果在php5.3之前都是使用dirname(__FILE__)來替代__DIR___

copyright © 萬盛學電腦網 all rights reserved