【发布时间】:2011-02-13 17:21:28
【问题描述】:
我不明白为什么这不起作用。
$docRoot = getenv("DOCUMENT_ROOT");
include_once($docRoot."/conn/connection.php");
include_once($docRoot."/auth/user.php");
它可以通过 wamp 在本地运行,但不能在我的实时服务器上运行。我试过这个:
if(!include_once($docRoot."/auth/user.php")){
session_start();
$debug = array();
$debug["docRoot"] = $docRoot;
$debug["inc_path"] = $docRoot."/auth/user.php";
$debug["file_exists"] = file_exists($debug["inc_path"]);
$_SESSION['DEBUG'] = $debug;
// exit
header("Location:debug.php");
exit();
}
调试页面只是回显该数组,并显示正确的绝对路径并表明该文件确实存在。那么为什么 include_once() 不起作用呢?服务器(MediaTemple 服务器上的 DV 帐户)根本没有配置,所以我想知道是否有 apache 或 php 设置让我感到困惑。
最终,我在这里想要的是一种引用文件的方式,即如果我移动文件或将其包含在另一个文件中,什么都不会破坏。有什么想法吗?
【问题讨论】:
-
您遇到什么错误?错误报告是否开启?
-
路径可能是正确的,但您的 PHP 可能会在安全模式打开之类的情况下运行,它可以重写包含路径以将它们限制在某些区域。
-
我很想用服务器的调试输出来更新您的问题。 (即:向我们展示
$debug的vardump。) -
@Pekka - 如果我不重定向到调试页面,我会收到“找不到远程服务器或文件”。
-
@Marc - 啊哈.. 看起来我的服务器正在运行安全模式。我不太喜欢修补这些东西,所以我没有碰它..
标签: php include absolute-path