Посмотрим как можно сформировать url относительно текущего местоположения файла в php.
К примеру, у в каталоге /site-script/ находится программа на PHP и подкаталог /site-script/img, где хранятся картинки.
Требуется построить относительный путь для изображений. Т.е. получить /site-script/img/picture_name.ext — url, который можно выводить в шаблоне.
Константа __FILE__
Определить путь файла скрипта позволяется системная константа __FILE__, которая хранит имя файла текущего скрипта и полный его путь.
Допустим, полный путь к программе выглядит так:
1 2 |
echo __FILE__; #/usr/www/sites/sitedomain.ru/web/site-script/prog.php |
тогда dirname(__FILE__) вернет нам:
1 2 |
echo dirname(__FILE__); #/usr/www/sites/sitedomain.ru/web/site-script |
Если добавить к нему /img/picture_name.ext, то мы получим системный путь картинки на нашем сервере.
Используем $_SERVER[‘DOCUMENT_ROOT’]
Нам нужно избавиться от части пути, которая совпадает с $_SERVER[‘DOCUMENT_ROOT’]. Можно использовать замену, но мы выбираем substr():
1 2 |
$relative_url = substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT'])) . '/img/picture_name.ext'; |
Использование substr позволяет в частности не заботиться о том, что, к примеру, в WINDOWS окружении __FILE__ и $_SERVER[‘DOCUMENT_ROOT’] используют разный разделитель для подкаталогов (слеш и бек-слеш).