如何在PHP中仅为绝对路径定义一次常量?

时间:2012-08-08 08:23:54

标签: php path constants

我有以下文件:

  • 管理员/ config.php中
  • 的header.php
  • 的index.php
  • 接触/ index.php的

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调用时不起作用,因为工作文件夹不同。

如何只为绝对路径定义一次常量?并能从任何地方调用它?或者如何最好地避免上述问题?

3 个答案:

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

这并没有真正回答这个问题......但它解决了我的问题。可能对其他人有用。