Linux Apache中PHP文件的根路径

3

我在我的Ubuntu服务器上使用php的include时遇到了定位文件的问题。

网站结构

/var/www/
     home/index.php
     include/header.php

当我尝试在文件home/index.php中插入以下内容include_once('/include/header.php')时,它无法工作。
然而,如果我将其更改为include_once('../include/header.php'),它可以正常工作,但是为了保持网站的一致性,我不能允许这种情况发生。
最好的解决方法是什么?

绝对路径总是有效的,include_once('/var/www/include/header.php') - user557846
@Dagon 如果我这样做,就无法在xampp中测试它。 - mk_89
好的,现在你告诉我你想要那个,难道我看起来像通灵者吗? :-) - user557846
3个回答

5
如果你的文档根目录是/var/www/,那么你可以使用以下命令:
include $_SERVER['DOCUMENT_ROOT'] . '/include/header.php';

通常,PHP会正确获取DOCUMENT_ROOT,因此您通常可以依靠它。
如果您想相对于执行包含操作的脚本包含文件,可以使用以下方式:
include dirname(__FILE__) . '/../include/header.php';

谢谢,这个可行,只是可惜没有 Dreamweaver 用户友好的解决方案。 - mk_89
为什么Dreamweaver不喜欢它? - drew010
它无法从顶部文件导航预览PHP文件,但我想这不是什么大问题。 - mk_89

2

前导斜杠表示绝对路径。大多数应用程序会在周期的早期定义一个APP_ROOT常量或类似的东西来解决这些问题。

define('APP_ROOT', dirname(__FILE__));

然后稍后您可以使用以下方式包含文件:

include(APP_ROOT . '/includes/header.php');

1
我会尝试以下方法。

include_once($_SERVER['DOCUMENT_ROOT'].'/include/header.php');


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接