關於 php include 有路徑的問題!!

想請問我的include會有路徑的問題。。。
假設
a.php
我在a.php引入 b.php

include 'php/b.php';

/php/b.php

這沒問題
但是當。。。

/user/c.php
當我的c想要引入b.php時

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

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

阅读 2.9k
2 个回答

如果用相对地址,需要注意是针对你的 CWD (当前工作目录)为起点的,通常 HTTP 环境下 CWD 是你的网站根目录,你可以用 getcwd() 查看和用 chdir() 切换。如果你实在搞不清楚,可以相对当前文件的目录来,比如 include __DIR__.'/../php/b.php';,比较老的(好像是 5.1 以前吧)没有 __DIR__ 可以用 dirname(__FILE__) 替代。

--

我又看了下,您的目录结构是这样的吧:

  • a.php
  • php

    • b.php
  • user

    • c.php

如果用相对当前文件的路径在 c 里引入 b,c 里可写作:

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

采用这种方式,无论您的 CWD 是哪个引入路径都不会错的。

当然了,您如果有固定的入口文件,在里面定义几个路径常量,或预先设置好 include_path,后续代码的 include 部分会更干净些。如您上面的入口总是 a.php 的话,c.php 里想引入 b.php 也可以写作 include 'php/b.php';,这是因为通常情况下,include_path 里会包含 '.' (当前工作目录)。

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题