没有这样的文件或目录PHP错误 - 但文件在那里

时间:2011-12-09 10:01:59

标签: php

每当我尝试在我的index.php中包含一个php文件时,我都会收到此错误:

  

没有这样的文件或目录

首先,我将此文件包含在index.php:require_once("../resources/engine/settings.php");

的开头

我没有收到任何错误,但是当我将标题文件包含在require_once($TEMPLATES."/header.php");

我收到了这个错误。

$ TEMPLATES是一个在settings.php中声明的变量(正确包含在index.php中)。

这是settings.php:

<?php

     $BASEURL = "http://localhost/webname";
     $CSSFolder = $BASEURL."/public/css";
     $CSS = $CSSFolder."/style.css";
     $IMGFolder = $BASEURL."/public/img";

     $ROOT = $_SERVER["DOCUMENT_ROOT"]."/webname";
     $TEMPLATES = $ROOT."/resources/templates";
     $ENGINE = $ROOT."/resources/engine";

?>

2 个答案:

答案 0 :(得分:3)

我总是使用dirname来定义根路径,而不是使用$_SERVER['DOCUMENT_ROOT'],而id建议您也使用它。如果你在整个地方使用它,你将更快地摆脱所有可能产生混乱的路径。

我觉得使用起来比较容易,比如

$ROOT = dirname(__FILE__)."/webname";

虽然它们似乎返回相同,但使用DOCUMENT_ROOT返回脚本执行位置的绝对路径,而dirname调用绝对是文件物理位置的位置。

现在解决您的问题:

一种简单的调试方法包括这样实际上只是打印出路径,这将是print $TEMPLATES."/header.php"并检查是否符合您的预期,如果没有,则更正它。

答案 1 :(得分:0)

是的,使用dirname(__FILE__)要好得多,因为您的站点根目录不一定与服务器的DOCUMENT_ROOT相同。

另外在一些配置上很高兴使用als realpath()来解析一些符号链接。