如何在2个以上的目录中包含文件?

时间:2020-03-06 15:01:56  来源:igfitidea点击:

如何包含超过2个目录的文件。我知道我们可以使用../ index.php来包含一个向后2个目录的文件,但是如何为回到3个目录呢?
这有意义吗?
我尝试了... / index.php,但无法正常工作。

我在/ game / forum / files / index.php中有一个文件,它使用PHP include来包含一个文件。它位于/ includes / boot.inc.php中; /是根目录。

解决方案

../../index.php

我们可以执行../../ directory / file.txt。这将返回两个目录。

../../../这三个。等等

..从当前目录中选择父目录。当然,可以将其链接起来:

../../../includes/boot.inc.php

这将是两个目录。

../../index.php

../的每个实例表示向上/向后一个目录。

../../../index.php

所以../使我们返回一个目录而不是两个目录。

../../../includes/boot.inc.php

尽可能多地链接../,以提高2个或者更多级别。

. = current directory
.. = parent directory

但是要非常小心让用户选择文件。我们并不是真的想让他们获得一个名为的文件,例如,

或者其他敏感的系统文件。

(对不起,自从我是linux sysadmin以来已经有一段时间了,根据我的记忆,我认为这是一个敏感文件)

../../../../../../../../../../etc/passwd

要在一个目录后面包含一个文件,请使用'../ file'。 对于后两个目录,请使用'../../ file'
等等。

虽然,实际上,我们不应该执行相对于当前目录的包含。如果我们想移动该文件怎么办?所有链接都将断开。确保我们仍然可以链接到其他文件,同时在移动文件时保留这些链接的一种方法是:

DOCUMENT_ROOT是一个服务器变量,代表代码所在的基本目录。

如果我们在包含内容的开头包含/,则包含内容将作为从站点根目录开始的路径。

require_once($_SERVER['DOCUMENT_ROOT'] . 'directory/directory/file');

如果网站是http://www.example.com/game/forum/files/index.php,则可以在/includes/boot.inc.php中添加一个包含内容的内容,该内容将解析为http://www.example.com /includes/boot.inc.php。

我们必须小心使用..遍历,因为某些Web服务器已禁用它。当我们要将站点移至新的计算机/主机时,它还会引起问题,并且结构有所不同。