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