PHP получает абсолютный URL-адрес сайта на сервере?
Я сильно полагаюсь на $_SERVER["DOCUMENT_ROOT"]
, чтобы получить абсолютные пути. Однако это не работает для сайтов, URL-адреса которых не указывают на корень.
У меня есть сайты, хранящиеся в папках, например:
все непосредственно внутри корня. Есть ли способ получить путь на сервере, где находится текущий корень сайта?
Он должен вернуться:
/var/chroot/home/content/02/6945202/html/site1 // If the site is stored in folder 'site1'
/var/chroot/home/content/02/6945202/html // If the site is stored in the root
Ответы
Ответ 1
Вы можете просто добавить dirname($_SERVER['SCRIPT_NAME'])
к $_SERVER['DOCUMENT_ROOT']
.
Обновление
Веб-сайт, похоже, находится в каталоге, установленном в этой папке, поэтому SCRIPT_NAME
, очевидно, будет /
.
Итак, для выполнения этой работы вам нужно использовать либо __DIR__
, либо dirname(__FILE__)
, чтобы узнать, где находится ваш script в файловой системе.
Обновление 2
Нет единого контроллера index.php
для всего сайта, поэтому он не будет работать.
Следующее выражение выводит строку "вычитание", чтобы найти общий путь. У вас есть известный префикс (корень документа), неизвестный (корневая папка) и известный суффикс (путь script), поэтому, чтобы найти первые два, вы принимаете полный абсолютный путь (__FILE__
) и вычитаете известный суффикс:
substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME']));
Если входящие файлы нуждаются в этом значении, вы должны сначала сохранить это в константе, прежде чем включать зависимые скрипты..
Ответ 2
Для будущих гуглеров это также работает для меня
substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));
Ответ 3
Просто используйте getcwd()
для текущего абсолютного пути к серверу папки, в которой находится текущий script.
Вы можете определить константу в верхней части вашего сайта, чтобы остальная часть сайта могла положиться на этот путь.
define('MY_SERVER_PATH', getcwd());
Ответ 4
используйте следующий метод для получения абсолютного корневого url из настроек вашего сервера.
str_replace($_SERVER['DOCUMENT_ROOT']."/",$_SERVER['PHPRC'],$_SERVER['REAL_DOCUMENT_ROOT'])
или используйте getcwd(). он получает текущий рабочий каталог вашего приложения