不能包含(“absolute_path”)

时间:2011-02-13 17:21:29

标签: php include absolute-path

我无法弄清楚为什么这不起作用。

$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设置搞砸了我。

最终,我想要的是一种以这样的方式引用文件的方式:如果我移动文件,或将其包含在另一个文件中,则不会有任何破坏。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在调试中,您可以尝试is_readable($docRoot."/conn/connection.php")。即使文件没有可读权限,file_exists函数也会返回true。

如果您收到错误代码,我们可能会提供有关出错的更多信息。

答案 1 :(得分:0)

启用错误报告虚拟。事实证明,另一个文件中的一个包含打破了这个页面,在我打开错误报告之前我无法追踪它。

顺便提一下,有问题的包括在文件路径中缺少一个前导斜杠(include(“dir / file.ext”);),它在我的本地wamp设置上运行并在linux服务器上中断。