У меня есть эта структура папок в моем проекте PHP. (это показано в затмениях)
-MySystem +Code +Data_Access -Public_HTML +css +js +Templates -resources
Когда я пробую этот код
echo $_SERVER['DOCUMENT_ROOT']
выход
D: / рабочее пространство
Как я могу получить путь к RootDirectory системы ( MySystem
), без MySystem
имени папки?
Для PHP> = 5.3.0 попробуйте
Магические константы PHP.
__DIR__
И сделайте свой путь относительно.
Для PHP <5.3.0 попробуйте
dirname(__FILE__)
Когда вы говорите, что
$_SERVER['DOCUMENT_ROOT']
содержит этот путь:
D:/workspace
Тогда D:
это то, что вы ищете, не так ли? В этом случае вы можете взорвать строку с помощью косой черты и вернуть первый:
$pathInPieces = explode('/', $_SERVER['DOCUMENT_ROOT']); echo $pathInPieces[0];
Это выведет корневой каталог сервера.
Обновление. Когда вы используете константу DIRECTORY_SEPARATOR
вместо жестко скопированной косой черты ( '/'
), этот код также работает под Windows.
Обновление 2: глобальная переменная $_SERVER
не всегда доступна. Например, в командной строке (cli). Поэтому вы должны использовать __DIR__
вместо $_SERVER['DOCUMENT_ROOT']
. __DIR__
возвращает путь к самому файлу php.
используйте функцию PHP:
getcwd()
Возвращает текущий рабочий каталог.
вы можете попробовать: $ _SERVER ['PATH_TRANSLATED']
цитата:
Путь файловой системы (не основанный на документе root-) к текущему скрипту после того, как сервер выполнил какое-либо сопоставление виртуальной реальности. Примечание. Начиная с PHP 4.3.2, PATH_TRANSLATED больше не устанавливается неявно под Apache 2 SAPI, в отличие от ситуации в Apache 1, где оно установлено на то же значение, что и переменная сервера SCRIPT_FILENAME, когда она не заполняется Apache. Это изменение было сделано для соответствия спецификации CGI, что PATH_TRANSLATED должен существовать только в случае определения PATH_INFO. Пользователи Apache 2 могут использовать AcceptPathInfo = Внутри httpd.conf для определения PATH_INFO.
источник: php.net/manual
Я хочу указать, как WordPress справляется с этим:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
Поскольку WordPress очень сильно используется во всем Интернете, а также отлично работает локально, я очень доверяю этому методу.
echo $pathInPieces = explode(DIRECTORY_SEPARATOR , __FILE__); echo $pathInPieces[0].DIRECTORY_SEPARATOR;