在php 中dirname() 函數返回路徑中的目錄部分,__FILE__而當前運行文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。這是一個魔法變量(預定義常量),在windows中沒有問題但在linux中路徑出現的問題,下面我們一起來看看路徑問題解決方法。
近期在給wordpress開發模板功能時發現,直接使用include(“文件名”)的形式調用其他php代碼片段時會出現路徑錯誤。之前服務器環境一直都是iis,未曾出現過類似的BUG,但換成linux服務器後便出現了路徑調用錯誤。在網上搜尋了一番,發現可以在調用時使用dirname(__FILE__)來解決linux服務器下包含文件時的路徑錯誤。
其實主要問題來自於linxu服務器下的站點根目錄問題,在linux服務器下包含某個文件時,其路徑為/home/web/。如果直接使用include(“/文件名”)的格式,則實際上包含的文件路徑為/home/web/文件名。
完整的使用方法為include dirname(__FILE__) . ‘/page.php’
這段代碼引用的文件需要與代碼所在文件處於同一目錄,如果需要調用上一層目錄可以使用dirname(dirname(__FILE__))來調用上一層目錄的文件。
如果大家在網站更換服務器後遇到包含類問題時,不妨檢查一下網站是否有引用路徑的錯誤。建議在書寫php包含時就使用dirname(__FILE__)的方法引用文件,以解決多數情況下的引用問題。