代码之家  ›  专栏  ›  技术社区  ›  Rob

如何在PHP中获取更高目录的名称?

php
  •  0
  • Rob  · 技术社区  · 16 年前

    例如,我正在编写一个脚本来检查各种设置和权限。它检查 ../login/includes/ 要查看它是否可写,但是当它显示错误时,我想显示它的完整URL。

    例如,安装程序的URL是 http://example.com/path/to/installer/index.php 当它出错时,我想显示它 http://example.com/path/to/login/includes/ 而不是 http://example.com/path/to/installer/../login/includes/

    我知道我可以用 $_SERVER['HTTP_HOST'] 为了得到 example.com 但我需要知道如何得到 path/to/

    有什么想法吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   moeffju    16 年前

    你可以用 parse_url explode() 拆分目录分隔符常量(“/”在Unix中,“\”在Windows中)以更改路径。

    要获取脚本的路径,请使用superglobal $_SERVER 数组: $_SERVER['PHP_SELF'] :'当前执行脚本的文件名,相对于文档根目录。'另请查看 $_SERVER['REQUEST_URI'] ('为访问此页而给定的URI;例如,'/index.html'')和 $_SERVER['SCRIPT_NAME'] . 最简单的方法是打电话 phpinfo() 在脚本中滚动到 $服务器 瓦尔斯

    如果您不使用mod ou rewrite,您可以通过阅读获得脚本的当前路径。 $服务器['php_self'] . 然后,使用 explode(DIRECTORY_SEPARATOR, $path) . 小例子:

    # get path
    $path = $_SERVER['PHP_SELF'];
    # split path
    $path_components = explode(DIRECTORY_SEPARATOR, $path);
    # remove last element of path
    array_pop($path_components);
    # rebuild path
    $path = implode(DIRECTORY_SEPARATOR, $path_components);
    
        2
  •  0
  •   hafichuk    16 年前

    你可以尝试使用 $_SERVER['REQUEST_URI'] 以获得完整的路径。

    见: http://php.net/manual/en/reserved.variables.server.php

    不知道为什么你需要使用“…”而不是仅仅使用 http://example.com/path/to/login/includes . 假设 path/to 部分永远不会改变,您可以将其分配给一个变量。

        3
  •  0
  •   Fluffy    14 年前

    您也可以使用 dirname :

    var_dump(dirname('http://example.com/path/to/installer/index.php'));
    var_dump(dirname(dirname('http://example.com/path/to/installer/index.php')));
    var_dump(dirname(dirname(dirname('http://example.com/path/to/installer/index.php'))));
    

    输出:

    string(36) "http://example.com/path/to/installer"
    string(26) "http://example.com/path/to"
    string(23) "http://example.com/path"
    

    多个 目录名 S有点乱,如果你愿意的话,你可以把它包装成一个函数。

    推荐文章