Не могу правильно вывести title :(

Lexx59

Профессор
Регистрация
9 Янв 2009
Сообщения
183
Реакции
38
Решил немного переделать простенький движок.
В дефолтном виде он такой:
В корне есть папка /data/
В ней /data/header.php
Код:
[I]код[/I]
<title><?php echo $title; ?></title>
[I]код[/I]
Файл index.php
Код:
<?php
$title = "Title1";
require('/data/header.php'); 
[I]код[/I]
?>
В таком виде title выводится нормально.
Но появилась потребность создать вложенную папку:
/city/index.php
причем, вложенность может быть любого уровня:
/country/city/index.php
Для которой нужно использовать тот же самый header.php

Поэтому в index.php добавил переменную с именем домена:
Код:
<?php
$domain = "http://site.ru";
$title = "Title";
require($domain.'/data/header.php'); 
[I]код[/I]
?>

В таком виде Title выходит пустым :(
Хотя остальной код из header.php подтягивается нормально.

Помогите разобраться в чем проблема?
Можно, конечно, вручную для каждого уровня вложенности index.php поправлять пути к папке /data/ либо копировать данную папку на каждый уровень, но хочется чтобы код не зависел от уровня вложенности.
 

хотя на хабре как-то проскакивало мнение что для пхп 5+ это не актуально...
 
*** скрытое содержание ***
хотя на хабре как-то проскакивало мнение что для пхп 5+ это не актуально...
Уже перебирал include, require, различные виды скобок. Не работает.
 
Вам необходимо в конфигурационном файле (можно и там, где идет подключение к базе) задать корневую папку сайта подобным образом
PHP:
define('SITE_DIR', realpath(dirname(__FILE__)));
и в дальнейшем, когда понадобится использовать require или include писать нечто такого рода
PHP:
require_once(SITE_DIR.'/header.php');
 
вы бы включили отображение ошибок - фраза "No such file or directory" скажет гораздо больше чем
В таком виде Title выходит пустым

попробуйте указать путь используя ./ для текущего каталога либо ../ для каталога выше
 
вы бы включили отображение ошибок - фраза "No such file or directory" скажет гораздо больше чем
попробуйте указать путь используя ./ для текущего каталога либо ../ для каталога выше
Именно этого ТС и пытается избежать...
Можно, конечно, вручную для каждого уровня вложенности index.php поправлять пути к папке /data/ либо копировать данную папку на каждый уровень, но хочется чтобы код не зависел от уровня вложенности.
 
Хотя остальной код из header.php подтягивается нормально.
Тут никакой ошибки нет? Если так, тогда выходит, что переменная определена, файл подключается, а переменная куда-то теряется? Мистика какая-то... :confused:
Опечатки, незакрытые скобки? Что видно в сгенерированном html? Вот это: <title></title>?
 
Тут никакой ошибки нет? Если так, тогда выходит, что переменная определена, файл подключается, а переменная куда-то теряется? Мистика какая-то... :confused:
Опечатки, незакрытые скобки? Что видно в сгенерированном html? Вот это: <title></title>?
Обратите внимание на переменную domen, файл не подключается, а идет http-запрос... ну и конечно, в результате мы получим html-код, который отдаст header.php как при прямом обращении к нему из браузера.
 
PHP:
include($_SERVER['DOCUMENT_ROOT'].'/data/header.php');
 
PHP:
include($_SERVER['DOCUMENT_ROOT'].'/data/header.php');

Вы не забыли что это работает не во всех случаях?
It's important to realize that the PHP directive register_globals also affects server and environment variables. When register_globals = off (the default is off since PHP 4.2.0), $DOCUMENT_ROOT will not exist. Instead, use $_SERVER['DOCUMENT_ROOT'] . If register_globals = on then the variables $DOCUMENT_ROOT and $GLOBALS['DOCUMENT_ROOT'] will also exist.

Также, DOCUMENT_ROOT не будет объявлена, если хост работает под IIS...
Если и использовать такой вариант, то прежде стоит в .htaccess прописать:

PHP:
SetEnv DOCUMENT_ROOT /path
 
Назад
Сверху