【问题标题】:can't include("absolute_path")不能包含(“absolute_path”)
【发布时间】: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


【解决方案1】:

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

如果您收到错误代码,我们可能会提供更多信息来说明问题所在。

【讨论】:

    【解决方案2】:

    开启错误报告假人。事实证明,另一个文件中的一个包含破坏了这个页面,在我打开错误报告之前我无法追踪到这一点。

    顺便说一句,有问题的包含在文件路径 ( include("dir/file.ext"); ) 中缺少一个前导斜杠,这适用于我的本地 wamp 设置并在 linux 服务器上中断。

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2020-04-06
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2011-04-15
      • 2016-12-12
      • 2015-09-28
      相关资源
      最近更新 更多