Я сильно полагаюсь на $_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
Вы можете просто добавить 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 () . он получает текущий рабочий каталог вашего приложения