$ _SERVER[‘DOCUMENT_ROOT’]

#php-5.2

#php-5.2

Вопрос:

Прежде всего, если вы читаете это, заранее благодарю вас за ваше терпение, — я довольно новичок в PHP, и у меня есть проблема, которую я попытаюсь объяснить / описать.

 //set default path
///var/www/vhosts/www.mydomain.com/httpdocs/
$url = 'http://mydomain.com/skins/coolblue/tmp';
$url2 = 'http://mydomain.com/skins/coolblue/tmp';
$doc = $_SERVER['DOCUMENT_ROOT'];
$path = '/templates/';
$actual_url = $doc.'/skins/coolblue/tmp'.$path;
 

(Изначально у меня был разработчик, который создавал мой сайт и настраивал мой сервер, но теперь он ушел)
мой сайт размещен на выделенном сервере с панелью управления plesk, поэтому, когда я позвонил в Godaddy и спросил у них значение ['DOCUMENT_ROOT'] , они дали мне * /var/www/vhosts/www.mydomain.com/httpdocs/ *

моя проблема в том, что я использую динамические URL-адреса, например subdomain.mydomain.com (который уже настроен и работает должным образом), который, в свою очередь, определяет содержимое, и поскольку выходные данные поступают из определенного скрипта с использованием $_SERVER['DOCUMENT_ROOT'] as выше, URL-адрес всегда является статическим URL-адресом в формате www. . Я хочу, чтобы URL-адрес был динамическим.

Есть ли способ обойти это, или я могу изменить $doc = $_SERVER['DOCUMENT_ROOT']; на фактический URL-адрес скрипта и добавить динамическую переменную домена ie http://$subdomain/domain.com ? Я перепробовал практически все варианты пути, но безуспешно. У вас есть какие-либо предложения? Кроме того, это $doc = $_SERVER['DOCUMENT_ROOT']; необходимо, или это был выбор разработчика вместо написания пути? — Еще раз спасибо

Комментарии:

1. Эта часть вашего вопроса не имеет смысла: «как указано выше, URL-адрес всегда является статическим URL-адресом в формате www. » — DOCUMENT_ROOT это физический путь к файлу, а не URL. Если вам по какой-либо причине не нужен физический путь к файлу, вам, вероятно, вообще не нужен этот код.

Ответ №1:

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

 RewriteCond %{HTTP_HOST} subdomain.site.tld$ [NC]
RewriteRule ^(.*)$ /subfolder/$1 [L,E=APPEND_ROOT:subfolder/]
 

Тогда простая модификация должна дать вам правильный путь:

 $doc = $_SERVER['DOCUMENT_ROOT'] . $_ENV['REDIRECT_APPEND_ROOT'];
 

$_SERVER['DOCUMENT_ROOT']; необходимо, если вы не хотите настраивать полное имя пути для каждого сайта (что является своего рода проблемой).

Если вы не используете .htaccess для разрешения ваших поддоменов, и вы настроили их в конфигурации Apache, он уже должен указывать на правильный физический дом для каждого поддомена.

Ответ №2:

$_SERVER['DOCUMENT_ROOT'] это путь., попробуйте использовать 'SERVER_NAME' или 'REQUEST_URI'

‘ИМЯ_СЕРВЕРА’

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

или

‘REQUEST_URI’

URI, который был указан для доступа к этой странице; например, ‘/index.html «.