![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Vitalik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Здравствуйте!..
Возникла такая проблема.. Есть проект, находящийся в папке /htdocs/project/ Стартовый файл: /htdocs/project/index.php Внутри файла index.php инклудится файл /htdocs/project/sub1/sub2/somefile.inc
Внутри файла sub1/sub2/somefile.inc необходимо инклудить файл, находящийся в родительской папке, то есть к примеру файл sub1/need_to_incude.inc Раньше я делал так:
Уже есть очень много файлов в папке sub1, и много папок вида sub2 с многими файлами внутри, которые инклудят эти первые файлы из папки sub1. Поэтому менять везде короткий относительный путь на полный абсолютный совсем не хочется.. Еще этого не хочется делать потому как при составлении этих файлов хочется чтобы они выглядели компактнее, тогда с ними удобнее работать.. |
||||
|
|||||
mishaSL |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Vitalik, посмотри что указано в директиве include_path
Для справки:
ИМХО, гораздо удобнее работать с абсолютными путями. Объявляешь в конфигурационном файле путь до проекта, а дальше при инклюде только дописываешь эту переменную. -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
||||||
|
|||||||
Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
Мне кажется можно использовать такой метод:
после каждого инклуда автоматически добавлять абсолютный адресс в include_path |
|||
|
||||
mishaSL |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 19 Всего: 54 |
Какой-то странный метод. Может я не понял, можно пример?
-------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
|||
|
||||
Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
заменяем include на myinclude
Это сообщение отредактировал(а) Всемогущий - 2.8.2007, 04:38 |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
Vitalik, Попробуй вот так:
|
|||
|
||||
Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Большое спасибо всем ответившим
![]() Простого решения этой проблемы, наверное, действительно нет.. Вполне возможно, что в PHP5 просто текущей директорией считается та, в которой находится самый первый "вызывающий" php-скрипт. А PHP4 по видимому текущей директорией была та, в которой находится текущий выполняемый php-скрипт (который мог быть инклуден в другой, в "вызывающий").. Хотелось бы увидеть такое решение проблемы, чтобы не надо было перелопачивать все файлы.. Думал, что можно, просто поменяв какую-нить директиву, сказать об этом 5-му PHP. Но раз это не представляется возможным, то есть в любом случае нужно будет проводить реорганизацию кода, то я решил сделать все несколько по-другому. Наверное, так даже будет удобнее. Все файлики need_to_include.inc будут собраны в одном большом, при чем они будут в виде функций. А в файлах вида somefile.inc нужно будет делать не инклуды, а вызовы этих функций. (естественно названия файлов я здесь привел вымышленные) Таким образом, эта проблема в данном случае отпадает, так и не найдя своего решения.. Еще раз спасибо за попытки помочь! ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Есть более простой путь и более правильный.
Во всех include'ах, fopen'ах, пишем полный путь /home/www/..../file.php. Дабы избавиться от лишних правок, корень выносится в константу, которая в include конкатенируется с именем и путем файла от корня, т.е. в данном случае include(DIR."/sub2/include.php"); |
|||
|
||||
Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
В принципе ведь, если написать
Кстати, вопрос может быть немножко не в тему, но все же.. Файлы, которые инклудятся принято делать с расширением inc или не стоит так делать и лучше, чтобы у всех было php?.. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Файлы с полным путем инклудяться быстрее, плюс это избавит от многих непонятных ошибок...
Лучше - php. |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Vitalik, если хотите использовать относительные пути, то лучше всего подойдет такая конструкция
Т.е. для инклюда путь будет абсолютным, а для вас относительным.
Не советую использовать расширение inc. Т.к. по умолчанию такой файл будет интерпретироваться апачем как текстовый, что может привести к проблеме в безопасности. В крайнем случае лучше использовать inc.php. |
||||
|
|||||
Vitalik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Координатор проекта Сообщений: 653 Регистрация: 8.11.2004 Где: Ukraine, Kharkov Репутация: нет Всего: 12 |
Можно дурацкий вопрос?.. Чем лучше расширение php?.. Просто я вот как-то раньше думал, что логичнее выглядит, если php - это файлы, которые могут быть запущены отдельно, а inc - это файлы, которые имеют смысл только если их инклудить.. Но вот недавно услышал такую вещь, что лучше использовать всегда php из-за того, что при загрузке из браузера php-код никогда виден не будет, а inc'овские файлы могут загрузиться как текстовые показав клиенту весь свой исходный код.. Есть ли еще какие-то причины не использовать расширение inc?.. ![]() Добавлено через 3 минуты и 33 секунды sTa1kEr, пасибки ![]() Пока я набивал сообщение (пару раз приходилось отходить надолго) вы уже написали похожий ответ (про inc-файлы), спасибо ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |