[英]is there a better way to go back to the directory root other than using $_SERVER['DOCUMENT_ROOT']?
我正在尝试学习一种更好的方法来回到根目录。 我听说使用$ _SERVER并不是最安全的方法。 我想知道是否有更好的方法。 所以我可以在url example.com/exp/my.php上得到类似的东西
这就是我得到的。
include ($_SERVER['DOCUMENT_ROOT'].'/cpages/cmain/func/init.php');
include($_SERVER['DOCUMENT_ROOT'].'/cpages/toppart.php');
include($_SERVER['DOCUMENT_ROOT'].'/cpages/boxes/image.php');
include($_SERVER['DOCUMENT_ROOT'].'/cpages/bottonpart.php');
我改成了
define ('DOCUMENT_ROOT', dirname(__FILE__));
include (DOCUMENT_ROOT.'/cpages/cmain/func/init.php');
include(DOCUMENT_ROOT.'/cpages/toppart.php');
include(DOCUMENT_ROOT.'/cpages/boxes/image.php');
include(DOCUMENT_ROOT.'/cpages/bottonpart.php');
但现在它给了我一个错误
Warning: include(C:\xampp\htdocs\backbone\image/cpages/cmain/func/init.php)
和($_SERVER['DOCUMENT_ROOT']
并没有告诉我错误是他们修复它的方法吗?
问题是你不能依赖$ _SERVER数组中的anthing,因为你可能会得到各种各样的值。
所以你需要以下规则:
如果编写公共代码,请将路径放在配置文件中。 然后,如果$ _SERVER在用户的服务器上不正确,则可以覆盖它。 如果您喜欢使用一些简单的规则,可以使用DOCUMENT_ROOT
帮助预先完成配置(见下文)。
如果编写自己使用的代码只能在服务器或两个服务器之间跳转,那么假设DOCUMENT_ROOT
是正确的,并且如果您移动服务器并且需要,则将其写入。
如果预编译配置变量,如何提供默认的DOCUMENT_ROOT
。
CONTEXT_DOCUMENT_ROOT
。 DOCUMENT_ROOT
几乎总是安全的,但有几个地方可能是错误的 - 在您提供的链接中就是这种情况。 如果apache使用mod_alias或mod user_dir。 在这些情况下,您需要使用更安全的CONTEXT_DOCUMENT_ROOT
。 但请注意,Apache只添加了一个月左右的CONTEXT_DOCUMENT_ROOT
,所以除非你有最新的安装,否则你需要回到DOCUMENT_ROOT
。 DOCUMENT_ROOT
- 见上文 PATH_TRANSLATED
(减去PHP_SELF
的长度)来构造当前工作目录的路径。 SCRIPT_FILE_NAME
(减去PHP_SELF
的长度)来构造当前工作目录的路径。 __DIR__
用于当前工作目录 然后,当您拥有这些详细信息时,请检查该目录中是否存在您知道的文件 - 如果存在,您可能已经找到了正确的路径。 如果没有,请尝试下一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.