我有以下文件:
index.php和contact / index.php都调用header.php。
header.php调用admin / config.php,它设置网站根路径WEBSITE_HTTP_ROOT
。我需要WEBSITE_HTTP_ROOT才能提供主页面的链接。
这是header.php:
<?php
require_once('./admin/config.php');
?>
<div id="menu">
<a href="http://<?php echo WEBSITE_HTTP_ROOT; ?>" id="logo">website</a>
</div>
第require_once('./admin/config.php');
行
在index.php调用时有效,但在contact / index.php调用时不起作用,因为工作文件夹不同。
如何只为绝对路径定义一次常量?并能从任何地方调用它?或者如何最好地避免上述问题?
答案 0 :(得分:1)
一种解决方案是始终使用{strong>使用dirname(__FILE__)
获取的当前php文件位置的相对路径来包含文件。
例如,在header.php
中,您可以将config.php
包括在内:
require_once(realpath(dirname(__FILE__)) . './admin/config.php');
然后在index.php
:
require_once(realpath(dirname(__FILE__)) . './header.php');
和contact/index.php
:
require_once(realpath(dirname(__FILE__)) . '../header.php');
答案 1 :(得分:0)
您可以定义基本网址参数:
define ( 'BASEURL', 'http://www.domain.com' );
然后使用:<a href="<?= BASEURL ?>/header.php">
或者首页,只需
<a href="<?= BASEURL ?>">
否则,只需将其引用为:
<a href ="/header.php">
或首页:
<a href ="/">
答案 2 :(得分:0)
事实上,我找到了一个解决方法(现在),因为我已经在主index.php中包含了config.php,我不需要在header.php中重新包含config.php
以下代码工作正常:
<?php
?>
<div id="menu">
<a href="http://<?php echo WEBSITE_HTTP_ROOT; ?>" id="logo">website</a>
</div>
这并没有真正回答这个问题......但它解决了我的问题。可能对其他人有用。