1

次のファイルがあります。

  • admin/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 から呼び出された場合は、作業フォルダーが異なるため機能しません。

絶対パスの定数を一度だけ定義するにはどうすればよいですか? どこからでも呼び出すことができますか?または上記の問題を回避する最善の方法は?

4

3 に答える 3

1

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

実際、メインの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 に答える
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 に答える