談?wù)凱HP中相對路徑的問題與絕對路徑的使用
問題描述
首先我們先來看一下我們這個例子的目錄結(jié)構(gòu)以及這三個文件的內(nèi)容
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 來說的這個相對路徑它是不存在的,所以就出現(xiàn)了這個問題
如果一個文件可能在多個地方被引用的時候使用相對路徑就相當(dāng)容易出問題,然后我們使用絕對路徑能夠輕松解決這個問題。
使用絕對路徑解決問題
如果我們把文件改成如下內(nèi)容
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開始中就有的預(yù)定義的魔術(shù)常量,表示這個文件所在的目錄,然后我們利用這個來可以寫出絕對路徑,在運行a.php和c/d.php的時候都能夠正常執(zhí)行了,如果在php5.3之前都是使用 dirname(__FILE__) 來替代 __DIR___
總結(jié)
以上就是關(guān)于php中相對路徑的問題以及絕對路徑的使用的全部內(nèi)容,希望對大家使用PHP能有所幫助,避免再進入php中相對路徑的坑。
相關(guān)文章
基于javascript實現(xiàn)tab選項卡切換特效調(diào)試筆記
這篇文章主要介紹了基于javascript實現(xiàn)tab選項卡切換特效調(diào)試筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-03-03
JS移動端/H5同時選擇多張圖片上傳并使用canvas壓縮圖片
這篇文章主要介紹了JS移動端/H5同時選擇多張圖片上傳并使用canvas壓縮圖片,需要的朋友可以參考下2017-06-06
js利用prototype調(diào)用Array的slice方法示例
這篇文章主要介紹了如何利用js的prototype調(diào)用Array的slice方法,需要的朋友可以參考下2014-06-06
再談querySelector和querySelectorAll的區(qū)別與聯(lián)系
先按W3C的規(guī)范來說這兩個方法應(yīng)該返回的內(nèi)容吧,大家先看下官方的解釋,然后根據(jù)需要選擇使用2012-04-04
BootStrap+Mybatis框架下實現(xiàn)表單提交數(shù)據(jù)重復(fù)驗證
這篇文章主要介紹了BootStrap+Mybatis框架下實現(xiàn)表單提交數(shù)據(jù)重復(fù)驗證功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
通過JavaScript腳本復(fù)制網(wǎng)頁上的一個表格
通過JavaScript腳本復(fù)制網(wǎng)頁上的一個表格...2006-07-07
JavaScript實現(xiàn)定時頁面跳轉(zhuǎn)功能示例
這篇文章主要介紹了JavaScript實現(xiàn)定時頁面跳轉(zhuǎn)功能,涉及javascript結(jié)合時間函數(shù)定時觸發(fā)自定義函數(shù)功能操作技巧,需要的朋友可以參考下2017-02-02

