首先我們先來看看我們這個範例的目錄結構以及這三個檔案的內容。
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 define('__B', 'this is a test');
這樣就改成了對檔案的絕對路徑進行引用了, __DIR__
是php5.3開始中就有的預先定義的魔術常數,表示這個檔案所在的目錄,然後我們利用這個可以寫出絕對路徑,在運行a.php和c/d.php的時候都能夠正常執行了,如果在php5.3之前都是用dirname(__FILE__)
來取代__DIR___
。
總結:在php中絕對路徑是指目錄下的絕對位置,直接到達目標位置,通常是從盤符開始的路徑;相對路徑為以一個參照為基準,找到你所需要的檔案即相對路徑是相對於目標目錄的相對路徑。
以上內容僅供參考!
推薦教學:PHP影片教學
#以上是php相對路徑和絕對路徑的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!