包括嵌套的php文件

时间:2013-06-24 05:10:07

标签: php include nested absolute-path

我在root / lib中有header.php,它在同一目录中包含header_sub.php。通常,root中的文件可以通过以下代码直接包含它们:

include_once('lib/header.php');

但现在我在子目录/博客中有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将无法正确包含。<​​/ p>

有没有办法在不修改它们的情况下包含header.php和header_sub.php?

1 个答案:

答案 0 :(得分: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
?>

这样做是否改变了工作目录一秒钟,包括头文件(将全部用头文件通常使用的工作目录编译),然后将工作目录恢复正常以方便用户你需要在以后相对包含其他东西。