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

Тема в разделе "PHP", создана пользователем Lexx59, 5 апр 2011.

Модераторы: latteo
  1. Lexx59

    Lexx59

    Регистр.:
    9 янв 2009
    Сообщения:
    179
    Симпатии:
    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/ либо копировать данную папку на каждый уровень, но хочется чтобы код не зависел от уровня вложенности.
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    Перейти по ссылке
    хотя на хабре как-то проскакивало мнение что для пхп 5+ это не актуально...
     
  3. Lexx59

    Lexx59

    Регистр.:
    9 янв 2009
    Сообщения:
    179
    Симпатии:
    38
    Уже перебирал include, require, различные виды скобок. Не работает.
     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Вам необходимо в конфигурационном файле (можно и там, где идет подключение к базе) задать корневую папку сайта подобным образом
    PHP:
    define('SITE_DIR'realpath(dirname(__FILE__)));
    и в дальнейшем, когда понадобится использовать require или include писать нечто такого рода
    PHP:
    require_once(SITE_DIR.'/header.php');
     
    Lexx59 нравится это.
  5. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    вы бы включили отображение ошибок - фраза "No such file or directory" скажет гораздо больше чем
    попробуйте указать путь используя ./ для текущего каталога либо ../ для каталога выше
     
  6. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Именно этого ТС и пытается избежать...
     
  7. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Тут никакой ошибки нет? Если так, тогда выходит, что переменная определена, файл подключается, а переменная куда-то теряется? Мистика какая-то... :confused:
    Опечатки, незакрытые скобки? Что видно в сгенерированном html? Вот это: <title></title>?
     
  8. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Обратите внимание на переменную domen, файл не подключается, а идет http-запрос... ну и конечно, в результате мы получим html-код, который отдаст header.php как при прямом обращении к нему из браузера.
     
  9. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    PHP:
    include($_SERVER['DOCUMENT_ROOT'].'/data/header.php'); 
     
    Lexx59 нравится это.
  10. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Вы не забыли что это работает не во всех случаях?
    Также, DOCUMENT_ROOT не будет объявлена, если хост работает под IIS...
    Если и использовать такой вариант, то прежде стоит в .htaccess прописать:

    PHP:
    SetEnv DOCUMENT_ROOT /path