多層目錄結構下,include/require 使用相對路徑極易因執行入口文件不同而失效。
b.php (項目根目錄)
a.php (根目錄)
c.php (根目錄)
dir/d.php (子目錄)
<?php
include_once(dirname(__FILE__) . "/../b.php");
include_once(dirname(__FILE__) . "/c.php");
?>
<?php
include_once(dirname(__FILE__) . "/dir/d.php");
?>
__FILE__:當前腳本完整路徑(含文件名)。dirname():取得目錄部分。include_path 或 chdir() 的副作用。__DIR__ 替代 dirname(__FILE__)。採用 dirname(__FILE__)(或 __DIR__)拼接路徑,是解決 PHP 文件包含路徑錯位最通用、最穩健的模式,建議作為項目編碼規範強制執行。