Forum Webscript.Ru

Программирование => PHP => Тема начата: Foshvad от 13 Августа 2002, 18:22:38

Название: мистика с include
Отправлено: Foshvad от 13 Августа 2002, 18:22:38
Наверняка это как-то объясняется, но я ума не приложу как!


1. Создаем файл index.php в котором пишем следующее:


  chdir(\'./index\');
  include(a.php\');
?>


2. создаем в этой же папке файл a.php в котором пишем: это файл a.php
3. создаем в этой же папке директорию index в которую помещаем файл a.php в котором пишем: это файл index/a.php

теперь запускаем index.php

видим:

это файл index/a.body

[color=ff0000]Внимание фокус![/color]

удаляем файл a.php из папки index и еще раз запускаем index.php

видим:

это файл a.body  !!!

скрипт index.php не менялся, chdir во второй раз никто не трогал, а PHP нашел другой include с тем же именем и благополучно вставил его.

Что же это такое?! Неужели так и надо?
Название: мистика с include
Отправлено: Макс от 13 Августа 2002, 18:35:36
У тебя в include_path точка стоит? Вот скрипт и ищет файл a.php в каталоге в котором текущий скрипт находится
Название: мистика с include
Отправлено: Foshvad от 13 Августа 2002, 18:41:43
Во-первых если убрать ./ абсолютно ничего не поменяется (проверял - под виндами так точно)
А во вторых все равно выходит, что скприт ищем include в двух папках....
Название: мистика с include
Отправлено: Макс от 13 Августа 2002, 18:47:05
Цитировать
Во-первых если убрать ./ абсолютно ничего не поменяется (проверял - под виндами так точно)
А во вторых все равно выходит, что скприт ищем include в двух папках....
Еще раз прочитай что я написал. Особенно обрати внимание на слово include_path Это - переменная в PHP которая в php.ini у тебя установлена.
Название: мистика с include
Отправлено: Foshvad от 13 Августа 2002, 18:50:32
у меня эта переменная в php.ini закомментирована (как и была по умолчанию)
Название: мистика с include
Отправлено: Макс от 13 Августа 2002, 18:58:16
echo ini_get("include_path");
что выводит?
Название: мистика с include
Отправлено: Foshvad от 13 Августа 2002, 19:07:39
.;c:\\php4\\pear
:)
Название: мистика с include
Отправлено: Макс от 13 Августа 2002, 19:10:15
.;c:\\php4\\pear
вот про точку (которая самая первая) я тебе и говорил
Название: мистика с include
Отправлено: Foshvad от 13 Августа 2002, 19:16:37
Хм... ну дык и что?
Разве команда incude запрашивает не конкретный файл из конкретной директории?

Точке ведь, вроде, означает просто текущею директорию
Название: мистика с include
Отправлено: OBOLTUS от 13 Августа 2002, 19:33:32
абсолютный путь укажи и не мучайся, или настройки меняй:)
Название: мистика с include
Отправлено: Макс от 13 Августа 2002, 22:51:48
Foshvad
Если путь абсолютный то PHP просто подключает файл. Если относительный, то PHP ищет файл относительно  путей прописанных в include_path в указаном порядке

Цитировать
Разве команда incude запрашивает не конкретный файл из конкретной директории?
угу. А если файл не существует то используется список из include_path
Название: мистика с include
Отправлено: Foshvad от 14 Августа 2002, 07:42:09
Цитировать
угу. А если файл не существует то используется список из include_path


Век живи - век учись....