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

更改头文件中的代码以使用绝对路径,就像您尝试使用 misc 文件一样,使用:

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 回答