PHP 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'

    Использовать функцию readlink ? http://php.net/manual/en/function.readlink.php

    Вы можете проверить, является ли это символической is_link с is_link : http://php.net/manual/en/function.is-link.php

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

    Используйте readlink ($ path) для чтения цели символической ссылки.

     <?php echo readlink(dirname(__FILE__)); ?> 
     <?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

    Каков наилучший метод для возврата '/ two / directory'?

    Используйте https://github.com/logical-and/symlink-detective и

     <?php echo SymlinkDetective::detectPath(dirname(dirname(__FILE__))); 

    вернет '/two/directory'

    Может быть, с realpath ()? http://php.net/manual/en/function.realpath.php

    Изменить: readlink кажется лучшим ответом 🙂