PHP dirname返回符号链接路径

时间:2012-09-25 09:44:56

标签: php symlink dirname

说我有一个从'/one/directory/''/two/directory/'的符号链接。

如果我echo dirname(dirname(\__FILE__)),则返回'/one/directory/'

返回'/two/directory'的最佳方法是什么?

使用示例:

Vhost 'example.com'指向`'/ two / directory'

  

example.com/hello_world.php

<?php 
    echo dirname(dirname(__FILE__));
?>

退货: '/one/directory'

预期结果: '/two/directory'

5 个答案:

答案 0 :(得分:9)

使用readlink功能? http://php.net/manual/en/function.readlink.php

您可以使用is_link检查它是否为符号链接:http://php.net/manual/en/function.is-link.php

if (is_link($link)) {
    echo(readlink($link));
}

答案 1 :(得分:6)

使用readlink($path)读取符号链接的目标。

<?php 
    echo readlink(dirname(__FILE__));
?>

答案 2 :(得分:2)

<?php

function getRealFile($path) {
    return is_link($path) ? readlink($path) : $path;
}

$path = getRealFile(dirname(__FILE__));

文档:

http://php.net/manual/en/function.is-link.php
http://php.net/manual/en/function.readlink.php

答案 3 :(得分:2)

  

返回'/ two / directory'的最佳方法是什么?

使用https://github.com/logical-and/symlink-detective

<?php 

echo SymlinkDetective::detectPath(dirname(dirname(__FILE__)));

将返回'/two/directory'

答案 4 :(得分:-1)

也许使用realpath()? http://php.net/manual/en/function.realpath.php

编辑:readlink似乎是一个更好的答案:)