Forum Webscript.Ru
		Программирование => PHP => Тема начата: chaosstorm от 16 Августа 2003, 19:40:15
		
			
			- 
				У меня на компе установлен Apache и PHP. Набираю http://localhost. Всё работает. Стоит где-то применить переменную окружения HTTP_HOST, например в:
 include ("http://$HTTP_HOST/data/config.php")
 Как в браузере выдаётся ошибки.
 Пробую на сервере - всё нормально, а локально не получается. Есть ли какой-нибудь выход?
 
 P.S. Я новичок, так что сильно не ругайте, лучше объясните.
- 
				попробую не ругать.
 include служит для того, чтобы включать в состав скрипта другой скрипт. Его ИСХОДНЫЙ КОД.
 А код лежит в файле.
 А файл - это то, что ты смотришь проводником или нортон коммандером на диске ЦЭ или ДЭ.
 а не то, что ты набираешь в командной строке браузера.
 то, что ты набираешь в командной строке браузера, писать в include НЕЛЬЗЯ!
 в инклюде надо писать путь к ФAЙЛУ
 вида include(\'c:/www/data/config.php\');
 тогда твой скрипт включит в себя конфиг и обработает то, что в нем написано.
 а не обратится с запросом, как браузер, к своему серверу, запросит конфиг, сервер конфиг ИСПОЛНИТ, и вернет то, что ты в этом конфиге выводишь. Ничего не выводишь? Ну так ничего и не вернет!
 
 чтобы сделать включение файлов универсальным, испольpeется переменная $DOCUMENT_ROOT
 и вот ее и надо писать вместо $HTTP_HOST!!!
 и безо всякого http://!!!
- 
				я вот только удивляюсь - откуда новички берут такую галиматью - инклюд по НТТР?
 Сами доходят, или читают где?
- 
				
 Пробую на сервере - всё нормально, а локально не получается. Есть ли какой-нибудь выход?
 
 
 ого!
 
 вот только удивляюсь - откуда новички берут такую галиматью - инклюд по НТТР?
 
 
 угумс!
- 
				я все понимаю, не флейма ради, но почему это в include нельзя писать "http://", или тут вопрос конкретно про винды?
 http://ru.php.net/manual/ru/ref.filesystem.php#ini.allow-url-fopen
 зачем обманывать людей....
- 
				Путь считается от корневого каталога сервера т.е. локально и хттп там просто не надо, а инклудить код в удалённых файлах не получиться (под винды) т.к. http://ua.php.net/manual/ru/function.include.php и там посмотреть на первое "внимание"...
			
- 
				archy:
 я все понимаю
 
 :-))))))))))))))))))
 ты себе льстишь
 
 сделай файл
 config.php
 ---
 
 $a="blabla";
 ?>
 ---
 и файл
 index.php
 ---
 
 //include("config.php");
 //include("http://".$HTTP_HOST."config.php");
 echo $a;
 ?>
 ---
 и запусти его с разными инклюдами.
 и когда ты поймешь, почему один тебе выводит, а другой - нет, то вот только после этого ты и сможешь писать, что "все понимаешь"
- 
				А $DOCUMENT_ROOT будет работать на Apache и PHP установленном локально, а не на сервере?
			
- 
				chaosstorm 
 будет
- 
				А вот у меня есть много страниц, расположенных в рахных катлогах какой код с include мне нужен(с использованием $DOCUMENT_ROOT - чтобы был универсальным), чтобы на всех их загружался скрипт расположенный в каталоге DATA корневого каталога?
			
- 
				include ("$DOCUMENT_ROOT\\DATA\\yourfile.php");
 только правильно пропиши корневик
- 
				RomikChef 
 ясен болт, что второй вариант ничего не выведет, но инклюдить файлы через http:// можно, другой вопрос какие и для чего! :)
- 
				Вроде всё сделал. Выводит такую ошибку:
 -----------------
 Notice: Undefined variable: DOCUMENT_ROOT in e:\\www\\home\\localhost\\www\\index.php on line 3
 
 Warning: main(\\DATA\\kernel.php): failed to open stream: No such file or directory in e:\\www\\home\\localhost\\www\\index.php on line 3
 
 Fatal error: main(): Failed opening required \'\\DATA\\kernel.php\' (include_path=\'.;c:\\php4\\pear\') in e:\\www\\home\\localhost\\www\\index.php on line 3
 ----------------------
- 
				Попробуй использовать $_SERVER[\'DOCUMENT_ROOT\'].
			
- 
				Теперь выводит:
 
 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in e:\\www\\home\\localhost\\www\\index.php on line 3
 
 
 А где можно проверить и правильно прописать корневик
- 
				archy 
 Да все знают, что так МОЖНО.
 но так же, все, в отличие от тебя знают, что реального смысла в этом нет. А есть опасность и геморрой.
 И все, кроме тебя знают, что влез ты совсем не в тему.
 Надеюсь, что ты удовлетворил свое эго, показал всем, какой ты умный и начитанный, и больше от тебя в этой теме замечаний не будет.
 
 chaosstorm
 include ($_SERVER[\'DOCUMENT_ROOT\']."/DATA/yourfile.php");
- 
				Запусти такой скрипт:
 phpinfo(); ?>
 и  увидишь все что тебе надо.