文件路径错误,路径开头有正斜杠

  • 本文关键字:路径 开头 错误 文件 php
  • 更新时间 :
  • 英文 :


我有一个文件夹,里面有一堆文章,它们都使用相同的页眉和页脚,这是在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

最新更新