PHP5 инклюды

N_N_N
На сайте с 10.09.2008
Offline
252
840

Господа - доки php5, помогите решить проблемку.

Необходимо вытягивать инклюдами (втавками php) в html некоторые часто обновляющиеся элементы из текстовых файлов.

Пример:

<?php include("файл.txt"); ?>

это работает, но необходимо, чтобы все текстовые файлы находились в одной папке и вытягивались из неё на любой странице сайта, т.е. образно так:

<?php include("/папка/папка/файл.txt"); ?>

Как это правильно технически оформить? Спасибо!

• Хостинг США анлим за $49/год и $200 вам на рекламу (http://goo.gl/IFQ0Kk) (юзаю 5 лет) • Мои домены здесь (http://www.regnic.name/) – доволен как слон
[umka]
На сайте с 25.05.2008
Offline
456
#1

Два варианта вижу.

Первый - считаю наиболее правильным.

У всех правильных сайтов есть какой-либо конфиг/header или вроде того.

Вот в нём объявить:

define("TXT_INC_DIR","/path/to/txt_includes_dir/");

А дальше уже в любом php-файле в любой директории:

include(TXT_INC_DIR."some_file.txt");

Второй - менее правильный.

Опять же, в каком-то глобальном конфиге или header-e для сайта прописать:

ini_set("include_path","/path/to/includes_dir/");

Слить в эту директорию вообще все инклуды от сайта. Ну и, соответственно, инклуды делать просто:

include("some_file.txt");
Лог в помощь!
aleksey_php
На сайте с 17.03.2008
Offline
53
#2

Если глобального файла настроек у сайта нет, то можно использовать ещё и такой вариант:

<?php include $_SERVER['DOCUMENT_ROOT'].'/path/to/txt_files/file.txt'; ?>

Будет работать из любого места на сервере.

S
На сайте с 28.10.2005
Offline
296
#3


<?php include ($_SERVER ['DOCUMENT_ROOT'] . "/путь/от/корня/сайта/файл.txt"); ?>

опередили..

N_N_N
На сайте с 10.09.2008
Offline
252
#4
aleksey_php:
Если глобального файла настроек у сайта нет, то можно использовать ещё и такой вариант:
<?php include $_SERVER['DOCUMENT_ROOT'].'/path/to/txt_files/file.txt'; ?>

Будет работать из любого места на сервере.

[umka], слишком сложно и увы не работает, но всё-равно спасибо.

aleksey_php, спасибо огромное :) заработало :)

я на предыдущем хостинге прописывал... правда там вдска была:

<?php include $DOCUMENT_ROOT . "/path/to/txt_files/file.txt'"; ?>

а здесь апач плеваццо стал.

ewg777
На сайте с 04.06.2007
Offline
225
#5

PHP5 или 4 - здесь неважно. Достаточно

include 'dir/file.txt';
а лучше
readfile('dir/file');
Если в txt-файле ничего не надо исполнять.
а здесь апач плеваццо стал.
Там в конце кавычка лишняя.
[Удален]
#6
Там в конце кавычка лишняя.

... одинарная которая

aleksey_php
На сайте с 17.03.2008
Offline
53
#7

Кавычка тут не виновата - она появилась, судя по всему, в результате неаккуратного копирования моего примера.

Проблема на старом хостинге была в register_globals off, который в выключенном состоянии не создаёт глобальные переменные типа $DOCUMENT_ROOT. Ругался, само собой, там не Апач, а PHP и писал, наверное, что-нибудь в стиле "Undefined variable: DOCUMENT_ROOT in ...". :)

alexspb
На сайте с 14.11.2005
Offline
187
#8

N_N_N, рекомендую еще закрыть директории с файлами для инклюдов от доступа по протоколу http, достаточно создать в директории файл .htaccess с содержимым

deny from all
N_N_N
На сайте с 10.09.2008
Offline
252
#9
ewg777:
Там в конце кавычка лишняя.

ewg777, кавычку я действительно неаккуратно скопипастил из цитаты aleksey_php, как он и заметил... но только здесь в посте - лень было директории переписывать ручками :)

А так его вариант мне отлично подошёл - всё работает как часы, тем более, что пришлось только первую часть строки пустить на автоподмену.

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

aleksey_php:
Проблема на старом хостинге ...

aleksey_php, на старом хостинге проблем не было, всё работало... как в моём примере, единственно, при on/off register_globals (точно не помню в "on" или в "off") инклюды прописанные прежним способом не обрабатывались, но апач/пхп не ругались.

alexspb:
N_N_N, рекомендую еще закрыть директории с файлами для инклюдов от доступа по протоколу http, достаточно создать в директории файл .htaccess с содержимым

alexspb, о! Вот это весьма полезный совет ☝ Спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий