我有一个包含大量文章的文件夹,这些文章都使用相同的页眉和页脚,它们位于includes/
文件夹中。我还需要添加不是文章的另一个文件,因此我不希望它与其他文章一起放在文件夹中,而是放在includes/
文件夹中。我仍然希望它使用与文章相同的页眉和页脚,所以很自然地我只使用像
include 'article_header.php';
错误位于标题内,其中 it 中包含include
个命令。由于article_header.php
文件是为文章构建的,因此其中的include
命令如下所示:
<?php
include 'includes/article_social_container.php';
include 'includes/article_search_container.php';
include 'includes/membership_container.php';
?>
因为这显然无法用于里面的文件 includes/
文件夹。所以我尝试使用正斜杠并从根目录开始,因此它适用于任何使用它的文件。
<?php
include '/root/folder/includes/article_social_container.php';
//other code
?>
但是,这似乎不起作用。我在过去的文件路径的开头遇到了正斜杠的问题,但它在其他时候也适用于我。
另外,为什么不会有人总是使用正斜杠并从根目录开始,只是为了保证安全?它可能就是这个问题的答案,因为除非是出于PHP中open_basedir()
函数的类似目的,否则这对我来说似乎是完全合理的。
非常感谢您的帮助。
答案 0 :(得分:2)
看一下__DIR__
魔法常数。它解析为它出现的脚本的目录。使用它,您只需要使用相对路径,例如......
// within the "includes" directory
include __DIR__ . '/article_social_container.php';
另一种选择是配置您的应用程序include_path
。假设您的bootstrap.php
目录中有一个脚本includes
,其中包含以下内容......
set_include_path(implode(PATH_SEPARATOR, [
__DIR__, // the "includes" directory
get_include_path()
]));
这会将includes
目录添加到include_path
堆栈的顶部。然后,您可以从任何其他脚本中执行以下操作...
require_once __DIR__ . '/relative/path/to/includes/bootstrap.php';
include 'article_header.php';
此时所包含的任何脚本都将具有相同的include_path
配置,因此他们可以简单地使用...
include 'article_social_container.php';
include 'article_search_container.php';
// etc