每当我尝试在我的索引中包含 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()
来解决一些符号链接。