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


No such file or directory PHP error - But the file is there

每当我尝试在我的索引中包含 php 文件时,我都会收到这个 PHP 错误.php:

没有这样的文件或目录

首先,我将此文件包含在索引的开头.php:require_once("../resources/engine/settings.php");

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

我收到那个错误。

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

这是设置.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";
?>

我总是使用 dirname 来定义根路径,而不是使用 $_SERVER['DOCUMENT_ROOT'] ,id 建议您也使用它。如果你到处使用它,你会更快地摆脱它可能出现的所有路径穿越混乱。

我发现它更容易使用,就像这样

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

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

现在回答您的问题:

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

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

此外,在某些配置上,很高兴使用 als realpath()来解决一些符号链接。