0

root/lib に header.php があり、同じディレクトリに header_sub.php が含まれています。通常、ルート内のファイルは、次のコードでそれらを直接含めることができます。

include_once('lib/header.php');

しかし、これらを使用すると、サブディレクトリ/blogにexample.phpがあります

include_once(../'lib/header.php');  or 
include_once($_SERVER['DOCUMENT_ROOT'].'/lib/header.php');  or 
include_once(dirname(__FILE__).'/lib/header.php');

header_sub.php が正しくインクルードされません。

header.php と header_sub.php を変更せずに含める方法はありますか?

4

1 に答える 1

0

ヘッダー ファイルのコードを変更して、miss ファイルでやろうとしていたように絶対パスを使用します。次を使用します。

include_once($_SERVER['DOCUMENT_ROOT'].'/header_sub.php');

ヘッダーファイルでは、このようにインクルードは現在のファイルシステムの場所に依存せず、相対的ではなく絶対的です。

わかりました、header.php を変更する必要はなく、ヘッダーを含むファイルだけを変更する必要がある、より適した別のソリューションを見つけました

<?php 
    $oldcwd = getcwd(); // Save the old working directory
    chdir("../"); // Moves up a folder, so from /blog to /
    include("header.php"); // Include the file with the working directory as if the header file were being loaded directly, from it's folder
    chdir($oldcwd); // Set the working directory back to before
?>

これが行うことは、作業ディレクトリを一瞬変更し、ヘッダー ファイル (ヘッダー ファイルが通常使用する作業ディレクトリですべてコンパイルされます) をインクルードし、必要な場合に便利なように作業ディレクトリを通常の状態に戻します。比較的後で何か他のものを含めます。

于 2013-06-24T05:16:13.340 に答える