鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ 關(guān)於 php include 有路徑的問題?。?/span>

關(guān)於 php include 有路徑的問題?。?/h1>

想請(qǐng)問我的include會(huì)有路徑的問題。。。
假設(shè)
a.php
我在a.php引入 b.php

include 'php/b.php';

/php/b.php

這沒問題
但是當(dāng)。。。

/user/c.php
當(dāng)我的c想要引入b.php時(shí)

include '../php/b.php';

然後假設(shè)b.php裡面又有其他 include,然後又分別在不同目錄
這樣我的c.php會(huì)說找不到那些目錄
但是我引入b.php的路徑是對(duì)的
有啥方式可以解決?

回答
編輯回答
陪她鬧

如果用相對(duì)地址,需要注意是針對(duì)你的 CWD (當(dāng)前工作目錄)為起點(diǎn)的,通常 HTTP 環(huán)境下 CWD 是你的網(wǎng)站根目錄,你可以用 getcwd() 查看和用 chdir() 切換。如果你實(shí)在搞不清楚,可以相對(duì)當(dāng)前文件的目錄來,比如 include __DIR__.'/../php/b.php';,比較老的(好像是 5.1 以前吧)沒有 __DIR__ 可以用 dirname(__FILE__) 替代。

--

我又看了下,您的目錄結(jié)構(gòu)是這樣的吧:

  • a.php
  • php

    • b.php
  • user

    • c.php

如果用相對(duì)當(dāng)前文件的路徑在 c 里引入 b,c 里可寫作:

include __DIR__.'/../../php/b.php';

采用這種方式,無論您的 CWD 是哪個(gè)引入路徑都不會(huì)錯(cuò)的。

當(dāng)然了,您如果有固定的入口文件,在里面定義幾個(gè)路徑常量,或預(yù)先設(shè)置好 include_path,后續(xù)代碼的 include 部分會(huì)更干凈些。如您上面的入口總是 a.php 的話,c.php 里想引入 b.php 也可以寫作 include 'php/b.php';,這是因?yàn)橥ǔG闆r下,include_path 里會(huì)包含 '.' (當(dāng)前工作目錄)。

2018年8月5日 03:34
編輯回答
兔寶寶

我的php是7.2.2,新的做法是 「__DIR__」嗎?

2017年12月16日 17:41