如何在php中的include中添加BASE_URL

时间:2014-04-15 00:26:23

标签: php

我在当地工作。我的<?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和图像中。任何的想法?感谢。

1 个答案:

答案 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/'