看板 PHP 關於我們 聯絡資訊
先說明檔案結構跟程式碼: ┬ a (目錄) │├ a.php │├ b.php │└ c.php c.phps.php s.php <?php include(a/a.php); ?> c.php <?php echo '<div>this is c.php</div>'; ?> a/a.php <?php include('b.php'); include('c.php'); echo '<div>this is a/a.php</div>'; ?> a/b.php <?php echo '<div>this is a/b.php</div>'; ?> a/c.php <?php echo '<div>this is a/c.php</div>'; ?> 接下來一樣是執行 s.php 狀況 1: c.php 存在,會產生這樣的結果: this is a/b.php this is c.php this is a/a.php 狀況 2: c.php 不存在,會產生這樣的結果: this is a/b.php this is a/c.php this is a/a.php 狀況 3: c.php 存在,把 a/a.php 改成 <?php include('./b.php'); include('./c.php'); echo '<div>this is a/a.php</div>'; ?> 會出現以下的結果: xxxx xxxx ←前兩行是找不到 b.php 的 warning 訊息 this is c.php this is a/a.php 如果要用相對路徑,想請問 include 的路徑是怎麼判定的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.109.197
LPH66 :記得以前實驗的結果是以最初include人的那個檔為準 06/23 20:51
LPH66 :不過當時用的是require 不確定include有沒有差 06/23 20:55
bobju :以最初的為準.而且還要考慮到include_path的設定問題 06/23 23:58
bobju :在每個script裏加上echo getcwd()函式追蹤吧.或許可 06/24 00:01
bobju :以抓出一些規則. 06/24 00:01
AndCycle :怕跑掉用 __DIR__ 就好啦, 請查閱 Magic constants 06/24 02:20
kylekai :__DIR__ 在php5.3才有, 5.2要用 dirname(__FILE__) 06/24 09:04
bobju :其實在php程式裏用include將其它php程式括進來是種常 06/24 11:55
bobju :見的方式,但的確很容易引起路徑問題.因為對於一個要 06/24 11:56
bobju :被include的php檔而言,它無法預設究竟會include它的 06/24 11:56
bobju :php檔將是來自何處. 06/24 11:56
bobju :所以另有一種常見的寫法是用'絕對路徑'來指示要 06/24 11:57
bobju :include的檔在哪? 而將這個絕對路徑的根目錄定義在 06/24 11:58
bobju :組態檔裏,並統一所有php檔都必須先讀取這個組態檔才 06/24 11:58
bobju :行.這樣可以把路徑問題給單純化. 06/24 11:59