| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > (PHP) как это делается? |
| Автор: sanich_ 8.7.2008, 14:06 |
| Есть, допустим, сайт http://mysite.ru, хранится он на хостинге в папке mysite.ru, в страницах этого сайта используется множество инклудов, т.е. страница, например index.php состоит из head.php, left.php, right.php, center.php, footer.php... index2.php состоит из head.php, left.php, right.php, center.php, footer.php... ... Все эти файлы хранятся внутри папки mysite.ru. Потребовалось создать подпроекты (поддомены) типа news.mysite.ru forum.mysite.ru На хостинге это новые дирректории, соответсвенно news.mysite.ru, forum.mysite.ru Эти разделы-сайты (news.mysite.ru,forum.mysite.ru) как и mysite.ru используют(включают) те же файлы head.php, left.php, right.php, center.php, footer.php Собственно вопрос: как правильно их использовать? Копировать эти файлы в новые подпроекты и также их подключать? - недостаток: при изменени включенной страницы, например (head.php) придется копировать во все подпроекты. Или в файлах подпроектов в прописывать пути типа require('http://mysite.ru/head.php) - такая жестская привязка пути не позволит использовать абсолютно одинаковые копии проектов на удаленном хостинге и локально веб сервере для отладки,т.к. для обращения к локальному веб серверу используется адрес http://mysite_local.ru/, http://news.mysite_local.ru/ ..... Кто как делает? ??? |
| Автор: bars80080 8.7.2008, 14:13 | ||||
подключая файлы, ты используешь не url-адрес, а реальный путь к файлу на сервере, т.е. что-то вроде:
соответственно достаточно корень определять автоматически: $SPath = $_SERVER['DOCUMENT_ROOT'].'/';
|
| Автор: sanich_ 8.7.2008, 14:36 | ||||||
Это я так понимаю вариант для случая когда нужно папку include_files вместе с содержимым нужно копировать во все папки проектов forum.mysite.ru news.mysite.ru ??? Я правильно понял? Другого решения подключения файлов нет? |
| Автор: Feldmarschall 8.7.2008, 14:58 |
| С какой стати копировать? Приведи-ка тут ПОЛНЫЕ пути к своим "папкам на сервере". |
| Автор: bars80080 8.7.2008, 15:05 | ||
| ну почему, можно и в случае с доп. доменами у меня допустим на хосте лежат папки mysite, pda, wap для адресов mysite.ru, pda.mysite.ru, wap.mysite.ru что сложного из одной директории обратится к другой? в этом случае чтобы подключить в файл (что в интернете по адресу) http://pda.mysite.ru/index.php файл, находящийся в mysite/inc/header.php достаточно написать:
а примеры я приводил, чтобы вы поняли, что в реквайр указываются не url, а реальные пути |
| Автор: sanich_ 8.7.2008, 16:54 | ||||
Вроде разобрался, тока вот какая проблема для хостигна запись то будет такая require('../mysite.ru/inc/header.php'); а для локального веб сервера запись будет такая require('../mysite_local.ru/inc/header.php'); Пути вот такие для сайта mysite.ru V:/home/mysite_local.ru/www - локальный веб сервер /home/login/mysite.ru/docs - хостинг Пути вот такие для сайта news.mysite.ru V:/home/news.mysite_local.ru/www - локальный веб сервер /home/login/news.mysite.ru/docs - хостинг запись вида ../head.php как я понимаю означает начиная с дирректории находящейся уровнем выше, уровнем выше будут папки mysite_local.ru - локальный веб сервер mysite.ru - хостинг А КАК можно указать что на 2 уровня выше? Я подумал что если сделать папку includes_files на том же уровне, что и папки всех сайтов на хостинге. ???? |
| Автор: bars80080 8.7.2008, 17:08 | ||
| на два уровня: ../../head.php всё можно свести к автоматическому определению пути, либо в крайнем случае, можно написать условие
|
| Автор: sanich_ 8.7.2008, 17:26 | ||||
Получилось, ну а что плохого в предложенном мной варианте: если множество проектов ипользуют одни и теже файлы включения, то удобно файлы включения иметь одну копию для всех проектов (для быстрой правки), поместить на один уровень с папками всех проектов (для разрешения конфликта путей на хостинге и локальном веб сервере) К тому же некоторые файлы такие как connection.php, в котором хранятся переменны для поключения к БД лучше вынести из зоны видимости web сервера |
| Автор: bars80080 8.7.2008, 17:34 |
| нормальное предложение для размещения конфигурационных файлов. только не копию, а действующий вариант когда возникает вопрос в размножении каких-то одинаковых файлов, сразу стоит задуматься, что это уже никакое не программирование |
| Автор: sanich_ 8.7.2008, 21:48 |
| а как быть с файлами изображений, которые тоже повторяются в каждом из проектов, указать путь типа ../../img/logo.jpg не получится т.к. это уже вне зоны видимости web сервера. Копировать папку с одинаковыми изображениями в каждый из проектов?? |
| Автор: Feldmarschall 8.7.2008, 21:57 |
| господи, ну это-то из самого букваря веб-мастера, вообще из детского сада На любюом сайте в мире можно написать <img src=http://site.com/image.jpg> и тебе покажет картинку. |
| Автор: sanich_ 8.7.2008, 22:07 | ||
А без указания полного пути, начинающегося с http://..... реально? Полный путь не резон использовать т.к. сайт на хостинге это http://mysite.ru/img.jpg а на локальном web сервере http://mysite_local.ru/img.jpg Т.е. используя относительный путь ??? |
| Автор: bars80080 9.7.2008, 09:04 | ||
sanich_, я ж это написал в примере:
хотя бы так, но лучше завязать определение путей на $SPath = $_SERVER['DOCUMENT_ROOT']; $SHost = 'http://'.$_SERVER['HTTP_HOST']; |