9

假设我有一个来自'/one/directory/'to的符号链接'/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'

4

5 回答 5

9

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

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

if (is_link($link)) {
    echo(readlink($link));
}
于 2012-09-25T09:47:58.263 回答
7

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

<?php 
    echo readlink(dirname(__FILE__));
?>
于 2012-09-25T09:46:25.517 回答
3
<?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

于 2012-09-25T09:49:46.590 回答
2

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

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

<?php 

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

将返回'/two/directory'

于 2016-11-05T08:49:09.500 回答
0

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

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

于 2012-09-25T09:47:21.240 回答