我在当地工作。我的<?php include ('header.php'); ?>
对于根目录中的文件工作正常。例如。 mysite/mypage.php
工作正常但mysite/mydir/mypage.php
无法找到任何包含,所有包含都位于根目录中。我在header.php中定义了BASE_URL
:
<?php
define('BASE_URL', 'http://localhost/bmmi/');
?>
然后,让我说我在contact.php
:
<?php
$title = 'Contact Us';
include (BASE_URL . 'header.php');
?>
但我仍然收到错误,因为它无法找到includes
。知道发生了什么事吗?感谢。
修改
仍然出错。这就是我现在所拥有的:
<?php
define('BASE_URL', '/Applications/MAMP/htdocs/bmmi/');
$title = 'Custom luxury homes';
include (BASE_URL . 'header.php');
?>
这是一个错误: 无法加载资源:服务器响应状态为404(未找到)
本地主机/ bmmi /组合/ IMG / logo.png
路径应该是这样的: bmmi / img / logo.png 。如您所见,在投资组合中添加 img / logo.png 。它发生在所有依赖项,.css,.js和图像中。任何的想法?感谢。
答案 0 :(得分:3)
问题是您需要文件系统上的路径,而不是浏览器访问它时的URL:
define('BASE_URL', '/path/to/webroot/bmmi/'); // <-- like this
$title = 'Contact Us';
include (BASE_URL . 'header.php');
或者,您也可以将其相对于包含当前文件的目录,如果您更改了Web根目录的路径,这将使您的脚本工作:
define('BASE_URL', __DIR__ . '/bmmi/');
注意:如果在PHP中启用了“URL include wrappers”,则可以使用URL指定要包含的文件,但是URL需要输出要由服务器解析的PHP脚本。我几乎可以肯定地保证不是这种情况,如果是这样,你可能会遇到一个重大的安全问题,因为控制其他服务器的人可以在你的应用程序中执行任意代码。
最后,您可能最好只是附加到当前的包含路径,并且不必每次都指定BASE_URL
常量。这样您就可以在不指定路径的情况下包含它:
set_include_path(
get_include_path()
.PATH_SEPARATOR.__DIR__.'/bmmi/'
.PATH_SEPARATOR.'/some/other/path/'
);
include('header.php'); // Will now also look for the file in __DIR__.'/bmmi/'