我有以下文件:
- 管理员/配置.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>
这并不能真正回答这个问题...但它解决了我的问题。可能对其他人有用。