如何在2个以上的目录中包含文件?
如何包含超过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服务器已禁用它。当我们要将站点移至新的计算机/主机时,它还会引起问题,并且结构有所不同。