每当我尝试在我的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";
?>
答案 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()
来解析一些符号链接。