問題:
在1.php中通過include("../B/2.php")來引入B目錄下的2.php文件;
在index.php中通過include("A/1.php")來引入A目錄下的1.php文件;
運行出來當然會出現問題,找不到../B/2.php文件。
這是因為:
1.php被編譯到index.php中執行,也就是相當於1.php同index.php一樣位於網站根目錄下,但是在1.php別忘記了一斷代碼include("../B/2 .php");
"../"意味著什麼?上一級目錄,現在1.php已經在根目錄下了,這時候再上一級,那就已經找不到2.php了,所以問題就出現在此。
很多人會想到include("/B/2.php"),這樣不就好了,同樣不行php不同於我們的jsp,在include中使用"/"並不是我們所想像的網站根目錄,它代表的的當前的目錄,因此還是不行。
既然不能用相對的,那我們可以改用絕對路徑的方式。只是在包含文件之前,先包含一個global.php文件。
這個文件的內容是:
chdir(dirname(__FILE__));
它的作用是將當前目錄切換到global.php所在的路徑。 將global.php放在根目時錄下,在這之後包含的所有文件就會以根目錄為基準了。
例如,在2.php中引用1.php,則,通過2步:
1.require(dirname(__FILE__).'/../global.php');//視具體的目錄情況,反正是要指回到根目錄下的global.php
2.require('A/1.php')//從根目錄開始定位
這樣的話,不管頁面在哪一級目錄,我都可以去引用,不用再擔心路徑問題了!