php - 为什么许多 PHP 开发人员使用 "__DIR__ . ' ../otherFolder'"?

标签 php relative-path dir

我经常看到这种类型的代码__DIR__.'/../Resources/config'。但为什么要点,我错了吗,输入 ../Resources/config' 是一样的吗?

最佳答案

不,这并不总是一回事。 __DIR__文件 的目录,而不是当前工作目录。这段代码本质上是一个动态生成的绝对路径。

将其写入~/foo/script.php:

<?php
// Ta, Sven
//  https://php.net/manual/en/function.realpath.php#84012
function get_absolute_path($path) {
    $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    $absolutes = array();
    foreach ($parts as $part) {
        if ('.' == $part) continue;
        if ('..' == $part) {
            array_pop($absolutes);
        } else {
            $absolutes[] = $part;
        }
    }
    return '/' . implode(DIRECTORY_SEPARATOR, $absolutes);
}

$p = __DIR__ . '/../bar';
echo $p . "\n" . get_absolute_path($p) . "\n";
?>

现在:

$ cd ~/foo
$ php script.php
/home/me/foo/../bar
/home/me/bar

$ cd ~/
$ php foo/script.php
/home/me/foo/../bar
/home/me/bar

但是如果我们去掉 __DIR__:

$ cd ~/foo
$ php script.php
../bar
/home/me/bar

$ cd ~/
$ php foo/script.php
../bar
/home/bar

看...最后一条路径不正确。

如果我们在任何地方使用这些路径,如果没有 __DIR__,它们就会被破坏。

无论何时编写脚本,都应确保从脚本所在目录以外的某个目录执行它是安全的!

关于php - 为什么许多 PHP 开发人员使用 "__DIR__ . ' ../otherFolder'"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33287050/

相关文章:

php - 列出显示 index.php 的文件夹中的文件

jquery - 如何列出与 Jquery 对象关联的方法

php - 使用来自其他服务器的 memcache

php - 密码 "salts"——我做对了吗?

java - 如何给出文件的相对路径?

c++ - 调试时未设置相对路径,为什么?

php - 查找图像文件路径并将其添加到 mySQL

php - 如何减少 Google PHP 库的大小?

java - Eclipse - 另一个项目中的引用文件

PHP递归删除函数