PHP получает абсолютный URL-адрес сайта на сервере?

Я сильно полагаюсь на $_SERVER["DOCUMENT_ROOT"], чтобы получить абсолютные пути. Однако это не работает для сайтов, URL-адреса которых не указывают на корень.

У меня есть сайты, хранящиеся в папках, например:

  • site1
  • site2

все непосредственно внутри корня. Есть ли способ получить путь на сервере, где находится текущий корень сайта?

Он должен вернуться:

   /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(). он получает текущий рабочий каталог вашего приложения