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 

Solutions Collecting From Web of "PHP получает абсолютный URL-адрес сайта на сервере?"

Вы можете просто добавить dirname($_SERVER['SCRIPT_NAME']) в $_SERVER['DOCUMENT_ROOT'] .

Обновить

Веб-сайт, похоже, находится в каталоге, установленном в этой папке, поэтому SCRIPT_NAME , очевидно, будет / .

Итак, чтобы выполнить эту работу, вы должны использовать либо __DIR__ либо dirname(__FILE__) чтобы узнать, где находится ваш скрипт в файловой системе.

Обновление 2

Нет единого контроллера index.php для всего сайта, так что это тоже не сработает.

Следующее выражение выводит строку «вычитание», чтобы найти общий путь. У вас есть известный префикс (корень документа), неизвестный (корневая папка) и известный суффикс (путь к скрипту), поэтому, чтобы найти первые два, вы берете полный абсолютный путь ( __FILE__ ) и вычитаете известный суффикс:

 substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME'])); 

Если для включенных файлов требуется это значение, вы должны сначала сохранить это в константе, прежде чем включать зависимые скрипты. ,

Для будущих гуглеров это также работает для меня

 substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__))); 

Просто используйте getcwd() для текущего абсолютного пути к серверу папки, в которой находится текущий скрипт.

Вы можете определить константу в верхней части вашего веб-сайта, чтобы остальная часть сайта могла положиться на этот путь.

 define('MY_SERVER_PATH', getcwd()); 

используйте следующий метод для получения абсолютного корневого URL-адреса из настроек вашего сервера

  str_replace($_SERVER['DOCUMENT_ROOT']."/",$_SERVER['PHPRC'],$_SERVER['REAL_DOCUMENT_ROOT']) 

или используйте getcwd () . он получает текущий рабочий каталог вашего приложения