【发布时间】:2012-07-08 04:43:24
【问题描述】:
根据一些非常有用的提示,我正在使用以下代码在我的根目录之外包含PHP 文件,看起来与此类似:
define('WEB_ROOT', __DIR__);
define('APP_ROOT', dirname(__DIR__));
define('PHP_ROOT', APP_ROOT . DIRECTORY_SEPARATOR . 'application');
include(PHP_ROOT . DIRECTORY_SEPARATOR . 'bootstrap.php');
我的问题是,例如,您可以根据上面的内容包含代码bootstrap.php。
如果 PHP 文件引导程序有自己的代码行,在 public_html 根文件夹中包含一个文件 BACK 怎么办......如何编写代码?我在这样做时遇到了一些困难,我的目标是我不想将实际的文字目录完整地放入代码中,并且我想避免文件遍历攻击
【问题讨论】:
-
如果您不想使用绝对路径,一种方法是在“外部”脚本中定义一个变量,然后在包含的“内部脚本”中使用该变量。例如:外部脚本中的
$include_prefix = <something>;和bootstrap.php 中的if(isset('include_prefix')){ include($include_prefix . "<something>"); }。但是,如果安全性和可靠性受到任何严重关注,我认为绝对路径是最好的方法。 -
哦,对不起,我应该澄清一下我认为我遇到的麻烦是,而不是简单地能够去 include("thatfilebackinrootdirectory.php");例如,它正在工作......它给了我一个错误,说没有这样的文件或目录,我假设因为我已经从根目录中上去了一个目录,它现在不知道如何从它在哪里?
-
您对出现该错误的原因是正确的。有很多解决方案——我会在一秒钟内详细回答。