我有一个文件夹,里面有一堆文章,它们都使用相同的页眉和页脚,这是在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()
函数。
非常感谢您的帮助
看一下__DIR__
魔术常数。它解析为显示它的脚本的目录。使用此方法,您只需要使用相对路径,例如…
// within the "includes" directory
include __DIR__ . '/article_social_container.php';
另一个选项是配置应用程序的include_path
。假设在includes
目录下有一个脚本bootstrap.php
,脚本如下:
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