У меня есть такая структура папок в моем проекте PHP. (это как показано в затмениях)
-MySystem
+Code
+Data_Access
-Public_HTML
+css
+js
+Templates
-resources
Когда я пробую этот код
echo $_SERVER['DOCUMENT_ROOT']
выход
D: / рабочее пространство
Как я могу получить путь к RootDirectory системы ( MySystem
) без жесткого кодирования имени папки?
__DIR__
. Он относится к самому файлу, поэтому, если он включен внутри подкаталога, он не вернет только ваш корневой каталог.Когда ты говоришь это
содержит этот путь:
Тогда
D:
это то, что вы ищете, не так ли? В этом случае вы можете взорвать строку косой чертой и вернуть первую:Это выведет корневой каталог сервера.
Обновление: когда вы используете константу
DIRECTORY_SEPARATOR
вместо жестко запрограммированной косой черты ('/'
), этот код также работает под Windows.Обновление 2:
$_SERVER
глобальная переменная не всегда доступна. Например, в командной строке (cli). Поэтому вы должны использовать__DIR__
вместо$_SERVER['DOCUMENT_ROOT']
.__DIR__
возвращает путь к самому файлу php.источник
__DIR__
вместо$_SERVER['DOCUMENT_ROOT']
.используйте функцию PHP:
getcwd()
Получает текущий рабочий каталог.
источник
Я хочу указать, как Wordpress с этим справляется:
Поскольку Wordpress очень широко используется во всем Интернете, а также отлично работает локально, я очень доверяю этому методу.
источник
можешь попробовать:
$_SERVER['PATH_TRANSLATED']
цитата:
источник: php.net/manual
источник
источник
Резюме
В этом примере предполагается, что вы всегда знаете, где находится корневая папка apache «/ var / www /», и пытаетесь найти путь к следующей папке (например, «/ var / www / my_website_folder»). Также это работает из сценария или веб-браузера, поэтому есть дополнительный код.
Код PHP7
пример
Вывод:
Подробности:
В основном сначала пытается получить DOCUMENT_ROOT, если он содержит '/ var / www /', затем используйте его, иначе получите текущий каталог (который много существует внутри проекта) и получает следующее значение пути на основе количества корневого пути $. Примечание: добавлены операторы rtrim, чтобы гарантировать, что возвращаемый путь заканчивается на '/' во всех случаях. Он не проверяет, должен ли он быть больше, чем / var / www /, он также может возвращать / var / www / в качестве возможного ответа.
источник