1

我有以下文件:

  • 管理员/config.php
  • 头文件.php
  • 索引.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 调用时无效,因为工作文件夹不同。

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

4

3 回答 3

1

一种解决方案是始终使用来自当前 php 文件位置的相对路径包含文件,该位置可使用dirname(__FILE__).

例如,在 中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');
于 2012-08-08T08:30:58.147 回答
0

您可以定义一个基本 url 参数:

define ( 'BASEURL', 'http://www.domain.com' );

然后使用:<a href="<?= BASEURL ?>/header.php"> 或用于首页,只需

<a href="<?= BASEURL ?>">

否则,只需将其引用为:

<a href ="/header.php">

或首页:

 <a href ="/">
于 2012-08-08T08:29:25.907 回答
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>

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

于 2012-08-08T09:50:20.807 回答