Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 除了使用$#u SERVER[';DOCUMENT#u root';],还有更好的方法返回到目录根吗?_Php_Document Root - Fatal编程技术网

Php 除了使用$#u SERVER[';DOCUMENT#u root';],还有更好的方法返回到目录根吗?

Php 除了使用$#u SERVER[';DOCUMENT#u root';],还有更好的方法返回到目录根吗?,php,document-root,Php,Document Root,我正在尝试学习一种更好的返回根目录的方法。我听说使用$\u服务器不是最安全的方法。我想知道是否有更好的办法。 因此,我可以在url example.com/exp/my.php上获得类似的内容 这是我得到的 include ($_SERVER['DOCUMENT_ROOT'].'/cpages/cmain/func/init.php'); include($_SERVER['DOCUMENT_ROOT'].'/cpages/toppart.php'); include($_SERVER['DOC

我正在尝试学习一种更好的返回根目录的方法。我听说使用$\u服务器不是最安全的方法。我想知道是否有更好的办法。 因此,我可以在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)

($\u SERVER['DOCUMENT\u ROOT']
没有告诉我错误是他们解决问题的一种方法?

问题是你不能依赖$\u服务器数组中的任何东西,因为你可能会得到各种各样的值

因此,您需要以下规则:

  • 如果编写公共代码,请将路径放入配置文件中。然后,如果用户服务器上的$\u服务器不正确,他们可以覆盖它。如果您喜欢使用一些简单的规则,可以使用
    DOCUMENT\u ROOT
    帮助预完成配置(见下文)

  • 如果为自己编写的代码只需要在一两台服务器之间切换,那么假设
    DOCUMENT\u ROOT
    是正确的,如果您移动了服务器并且需要,那么就编写它


  • 如果预编译配置变量,如何提供默认的
    文档\u ROOT

  • 在Apache上,检查
    CONTEXT\u DOCUMENT\u ROOT
    DOCUMENT\u ROOT
    几乎总是安全的,但是有几个地方可能会出错——您提供的链接就是这种情况。如果Apache使用mod\u alias或mod user\u dir。在这些情况下,您需要使用
    CONTEXT\u DOCUMENT\u ROOT
    ,这更安全。但请注意hat Apache只添加了一个月左右的
    CONTEXT\u DOCUMENT\u ROOT
    ,因此除非您有最新的安装,否则您需要依赖
    DOCUMENT\u ROOT
  • DOCUMENT\u ROOT
    -见上文
  • 使用
    PATH\u TRANSLATED
    (小于
    PHP\u SELF
    )构建到当前工作目录的路径
  • 使用
    SCRIPT\u FILE\u NAME
    (小于
    PHP\u SELF
    )构建到当前工作目录的路径
  • 将全局变量
    \uuuu DIR\uuuu
    用于当前工作目录

  • 然后,当你有这些详细信息时,检查你知道该目录中存在的文件-如果存在,你可能找到了正确的路径。如果没有,试试下一个。

    为什么
    ['DOCUMENT\u ROOT']
    会不安全?请看这个问题:@JonathonReinhart不确定,但最好找一个你知道的更安全的方法