Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не понимаю с инклюдами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Suspended
Отправлено: 08 Ноября, 2008 - 20:32:42
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Когда инклюды доходят до 2ого уровня вложенности, текущая дериктория следующего инклюда становится той же, где находится запускаемый скрипт ну или как-то так. В аттаче я эту структуру приложил, запускать файл 1.php. Совсем не понимаю почему это происходит, и как избежать. Нет, избежать я догадываюсь как, передавая переменную $path_prefix или типа того, но почему так происходит?
Скачать файл: www.rar
Скачан раз: 105
 
 Top
vitaliy_mad
Отправлено: 09 Ноября, 2008 - 00:46:48
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




include берет путь относительно главного скрипта... т.е.

при структуре файлов\папок:

-/
_|
_directory
_/_ ____\
f1.php___dir2
_________|_\
_________|__f2.php
_________|
________dir3
_________|
_________f3.php

то для вызова скрипта f2.php из f1.php, а f3.php из f2.php такоесодержание:

f1.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo "f1.php\n\r";
  3. include "./dir2/f2.php";
  4. ?>


f2.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo "f2.php\n\r";
  3. include "./dir2/dir3/f3.php";
  4. ?>
  5.  

f3.php


поэтому лучше использовать глобальную переменную и указывать полный путь (абсолютный)

(Отредактировано автором: 09 Ноября, 2008 - 00:48:20)

 
 Top
Suspended
Отправлено: 09 Ноября, 2008 - 21:23:09
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Аттач смотрели? Прикол в том, что скрипт 2.php в папке а, инклюдит b/3.php именно по пути относительно себя (файла 2.пхп), а не 1.пхп. и я не могу понять как такое происходит.
 
 Top
vitaliy_mad
Отправлено: 09 Ноября, 2008 - 21:48:50
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




Suspended пишет:
Аттач смотрели?

твой атач не скачивается
 
 Top
Suspended
Отправлено: 10 Ноября, 2008 - 14:06:50
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Странно.. а сейчас? Наверное сервер как-то не так среагировал на имя www.
Скачать файл: 123.rar
Скачан раз: 115
 
 Top
Suspended
Отправлено: 11 Ноября, 2008 - 22:07:05
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




vitaliy_mad, посмотри?
 
 Top
vitaliy_mad
Отправлено: 11 Ноября, 2008 - 22:47:09
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




Вот твой код один в один + вывод в каждом файле (во вложении).

Вывод после запуска

CODE (text):
скопировать код в буфер обмена
  1. 1.php
  2. 2.php
  3. 3.php
  4. 4.phpWHY?!

по моему все работает как и говорилось.. файл 4.php вызвается относительно 1.php
(Добавление)
если не указан путь(include "a/2.php"), то поиск осуществляется в директории первого скрипта и в директории текущего скрипта...

А если указан путь (include "./a/2.php"), то только по указанному пути относительно первого скрипта...
Скачать файл: ppp.rar
Скачан раз: 124

(Отредактировано автором: 11 Ноября, 2008 - 22:52:00)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB