Скажем, у меня есть символическая ссылка из '/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 кажется лучшим ответом 🙂