DOCUMENT_ROOT не завершен, отсутствует папка домена - PullRequest
2 голосов
/ 06 декабря 2011

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

Вот текущий способ, которым я пользуюсь:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);

, и путь, который я получаю, выглядит следующим образом:

/home/content/01/0151247/html

хотя я знаю, что он должен быть таким:

/home/content/01/0151247/html/mydomain

Я знаю, когда сравнивал его с SCRIPT_NAME и вижу там мой домен в пути.

Надеюсь, кто-нибудь может направить меня.

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

ОБНОВЛЕНИЕ

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

ОБНОВЛЕНИЕ

, очевидно, следующий способ разрешил мое дело, может быть, однажды это кому-нибудь поможет:

realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);

в основномиз-за настройки сервера и домена, настроенного как поддомен.

Спасибо всем, кто участвовал.

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011

До PHP 5.3 вы можете поместить файл в каталог, путь которого вы хотите, и определить константу:

define('ROOT_DIR', dirname( __FILE__ ));

После 5.3 вы можете просто:

define('ROOT_DIR', __DIR__);

Идея состоит в том, что это будет config.php некоторого вида, который включается при каждом запуске приложения.

Магические константы Документы

1 голос
/ 06 декабря 2011

UPDATE

В конфигурационном файле вы можете просто добавить переменную DOCUMENT_ROOT:

$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';

И это должно позаботиться об этом за вас.

Старое решение

DOCUMENT_ROOT - это переменная окружения, установленная сервером. Так что, если это на виртуальном хостинге, вы не можете изменить. Альтернативой является установка собственной константы, поэтому в файле типа config, который включен в ваши страницы, вы можете сделать что-то вроде:

define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');

А затем просто используйте эту константу вместо $_SERVER['DOCUMENT_ROOT']. Другой вариант - связаться с вашим хостом и узнать об этом, возможно, это был недосмотр с их стороны, и они это исправят.

EDIT

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

0 голосов
/ 06 декабря 2011

Лично, чтобы получить корень папки в PHP, я использую это в моем файле индекса:

define('ROOT', dirname(__FILE__));     // __DIR__ will work under PHP 5.3
...