当前位置:  开发笔记 > 编程语言 > 正文

如何在两个目录中包含文件?

如何解决《如何在两个目录中包含文件?》经验,为你挑选了12个好方法。

如何包含一个超过2个目录的文件.我知道你可以使用../index.php包含2个目录的文件,但你如何为3个目录做回来?这有意义吗?我试过.../index.php但它不起作用.

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



1> Konrad Rudol..:

..从当前选择父目录.当然,这可以链接:

../../index.php

这将是两个目录.



2> Dan Hulton..:

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

虽然,实际上你不应该执行包括相对于当前目录.如果您想移动该文件怎么办?所有的链接都会破裂.确保您仍可以链接到其他文件的方法,同时在移动文件时保留这些链接,是:

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

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


嘿丹快速问题:你说"***实际上你不应该执行包括相对于当前目录***".在大多数HTML文档中散布的所有相对路径怎么样?如果我移动了我的文件,那些会不会破坏?是否有使用相对与绝对链接的标准?先感谢您!
我认为它缺少一个斜杠,应该是:require_once($ _ SERVER ['DOCUMENT_ROOT']。'/ directory / directory / file');

3> Joe Skora..:
. = current directory
.. = parent directory

所以../给你一个目录而不是两个.

../根据需要连锁多次,达到2级以上.



4> gaborous..:
include dirname(__FILE__).'/../../index.php';

这是你最好的选择,它将避免你可以遇到的其他解决方案的大多数相对路径错误.

事实上,这将迫使包括永远是相对于当前脚本的位置,其中该代码被放置(哪个位置是最有可能的稳定,因为你定义应用程序的体系结构).这与仅执行include '../../index.php' 相对于执行(也称为"调用")脚本然后相对于当前工作目录不同,后者将指向包含脚本的父脚本,而不是从包含脚本的路径解析.

从PHP文档:

根据给定的文件路径包含文件,如果没有给出,则指定include_path.如果在include_path中找不到该文件,include将最终在失败前检入调用脚本自己的目录和当前工作目录.

我发现引用这个技巧的最古老的帖子可以追溯到2003年,由Tapken.

您可以使用以下设置进行测试:

创建这样的布局:

htdocs
¦   parent.php
¦   goal.php
¦
+---sub
    ¦   included.php
    ¦   goal.php

parent.php,放:


sub/included.php,放:


访问时的结果parent.php:

WRONG : X:\htdocs\goal.php
GOOD : X:\htdocs\sub\goal.php

我们可以看到,在第一种情况下,路径是从调用脚本解析的parent.php,而通过使用dirname(__FILE__).'/path'技巧,include是从included.php放置代码的脚本完成的.

请注意,以下内容并不等同于上面的诀窍,与其他地方的内容相反:

include '/../../index.php';

实际上,prepending /将起作用,但它将像include ../../index.php调用脚本一样解决(不同之处在于include_path如果失败则不会被追查).来自PHP doc:

如果定义了一个路径 - 无论是绝对路径(从Windows上的驱动器号或者\或Unix/Linux系统上的/开始)还是相对于当前目录(以.或..开头) - include_path将被完全忽略.



5> Brian Dillin..:

../是一个目录,重复两个目录../../甚至三个:../../../依此类推.

定义常量可以减少混淆,因为您将向后钻取到目录中

您可以定义一些常量,如下所示:

define('BD', '/home/user/public_html/example/');

define('HTMLBD', 'http://example.com/');

当使用'BD'或我的'基目录'时,它看起来像这样:

file(BD.'location/of/file.php');

限定(); 参考



6> bdukes..:
../../index.php 

       



7> leek..:
../../../includes/boot.inc.php

每个实例../意味着向上/向后一个目录.



8> 小智..:

以下是访问不同目录的方法: -

./ = Your current directory
../ = One directory lower
../../ = Two directories lower
../../../ = Three directories lower



9> Ólafur Waage..:

你可以这样做../../directory/file.txt- 这会回到两个目录.

../../../ - 这三个.等等



10> MazarD..:
../../../index.php

         



11> HAXEN..:
../../../includes/boot.inc.php



12> ZombieSheep..:

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

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

或其他敏感系统文件.

(对不起,我已经有一段时间了,因为我是一个linux系统管理员,我认为这是一个敏感的文件,从我记得的)

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有