Проблема с $ _SERVER ['DOCUMENT_ROOT'] - PullRequest
2 голосов
/ 21 августа 2011

У меня есть простая проблема с глобальной переменной сервера с именем: DOCUMENT_ROOT.

Вот мой файл config.php:

<?php
define ('UPLOAD_DIR',$_SERVER['DOCUMENT_ROOT'].'/resouces/');

Файл test.php

<?php

$photo='myimage.php';
echo '<img src="'.UPLOAD_DIR.$photo.'">';

Проблема в том, что при тестировании кода .. Изображение не отображается, а каталог начинается с:

C: // program files / easyPHP / www / resources

вместо

http://127.0.0.1:8888/

Как и должно быть ... Я попытался обновить эту строку в файле httpd.conf:

DocumentRoot "${path}/www"

до

DocumentRoot "http://127.0.0.1:8888/www"

Но сервер сообщает об ошибке:

enter image description here

Заранее спасибо: -)

Ответы [ 3 ]

3 голосов
/ 21 августа 2011

Вы неправильно понимаете DOCUMENT_ROOT;это путь к корневому каталогу, из которого подается код, а не IP, поэтому вы видите ошибку на скриншоте.Кроме того, при загрузке файлов вы на самом деле хотите путь к файлу, а не IP-адрес сервера.

Из документов:

[Корень документа] Корневой каталог документа, в котором выполняется текущий скрипт, как определено в файле конфигурации сервера.

Когда вы помещаете пути к файлам в HTML, это очень очень плохая практикаиспользовать IP-адрес сервера;это должен быть путь к файлу.Гораздо лучше использовать относительный путь к файлу вместо абсолютного;он намного меньше раскрывает информацию о вашем сайте, делая его немного более безопасным.

2 голосов
/ 21 августа 2011

Вы путаете физический путь с WWW URL.

1 голос
/ 21 августа 2011

$_SERVER['DOCUMENT_ROOT'] - это путь к вашей реальной файловой системе. Вам не нужно это здесь. Просто используйте

define ('UPLOAD_DIR','/resouces/');

Не путайте путь в файловой системе и путь на вашем сайте.
Они могут не иметь ничего общего (но в случае запроса по умолчанию URI отправлено $_SERVER['DOCUMENT_ROOT'].URI)

Вы также можете использовать

define ('UPLOAD_DIR_FILEPATH',$_SERVER['DOCUMENT_ROOT'].'/resouces/'); //to use in upload, renaming, deleting etc
define ('UPLOAD_DIR_WWW','/resouces/'); //to show URLs

Вам не нужно объявлять его на каждом уровне level, потому что путь начинается с root /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...