PHP 之中存在的路徑分為相對引用與絕對引用,'./'和'../',這兩種稱之為相對引用。相對引用,這個相對是指的是運行腳本所在的目錄,即:運行腳本的當前目錄。
如果a.php,去include另外一個b.php,同時這個b.php又在相對引用另外一個b.html。那么引用之后b.html是相對a還是b呢?
見下圖代碼:
<?php header("content-type:text/html;charset=utf8"); include('./b/b.php'); echo __FILE__; ?>
<?php header("content-type:text/html;charset=utf8"); echo __FILE__; include('./b.html'); echo __FILE__; ?>
他們之間的目錄關系:
a.php
b
b.php
b.html
運行a.php后:是找不到b.html
那么我們看打印的__FILE__, D:\warmp\wamp\www\b\b.php D:\warmp\wamp\www\b\b.php D:\warmp\wamp\www\a.php
當include('./b/b.php')之后,就相當於把b.php加載到了a.php之中了,這個時候b.php里面include('./b.html'),這個相對路徑就是,相對的是a.php 了,所以相對路徑,相對的是運行腳本所在的目錄,那么我們再看看__FILE__,雖然被include之后但是返回的路徑,還是沒有被調用之前所在的路徑。
手冊中解釋__FILE__:文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。自 PHP 4.0.2 起,__FILE__
總是包含一個絕對路徑(如果是符號連接,則是解析后的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
這和我們的運行結果是一致的。