如何在 PHP 中只定义一次绝对路径的常量


How can I define the constant for absolute path only once in PHP?

我有以下文件:

  • 管理员/配置.php
  • 标题.php
  • 索引.php
  • 联系人/索引.php

索引.php和联系人/索引.php调用标头.php。标头.php调用 admin/config.php它将网站根路径设置为 WEBSITE_HTTP_ROOT 。我需要WEBSITE_HTTP_ROOT才能提供指向主页的链接。

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

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

一种解决方案是始终使用当前 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');

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

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

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

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

否则,只需将其引用为:

<a href ="/header.php">

或首页:

 <a href ="/">

事实上,我找到了一个解决方法(目前),因为我已经包含了 config.php已经在主索引.php中,我不需要在标头.php中重新包含 config.php。

所以下面的代码工作正常:

<?php
?>
  <div id="menu">
    <a href="http://<?php echo WEBSITE_HTTP_ROOT; ?>" id="logo">website</a>
  </div>

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