За последние 24 часа нас посетили 17940 программистов и 1611 роботов. Сейчас ищут 929 программистов ...

странности с include

Тема в разделе "PHP для новичков", создана пользователем -=Р@Ф=-, 1 май 2008.

  1. -=Р@Ф=-

    -=Р@Ф=- Активный пользователь

    С нами с:
    1 май 2008
    Сообщения:
    2
    Симпатии:
    0
    Ситуация следующая: есть скрипт create_gallery.php
    Он создает из каталога с jpg-ами табличку с превьюшками и т.д.
    Если его напрямую открыть в окне браузера все отлично работает.
    Загвоздка в том, что я не могу его подключить к другому файлу .php
    include возвращает что файл не найден. Хотя если к примеру попробовать scandir'ом тот каталог прозвонить - файл присутствует. Пробовал и абсолютный путь задавать и относительный... Не видит файла и все...
    Инклуд так делал:

    include "create_gallery.php?dir=./gallery001&rows=3"; (для пробы положил в том же каталоге что и index.php, который его вызывает)

    include "../scripts/create_gallery.php?dir=./gallery001&rows=3"; (тут он по задумке должен лежать)

    Права менял на 0755 для обоих файлов.

    Подскажите где я ошибся...
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    -=Р@Ф=-
    Здесь явная ошибка. При подключении другого файла нельзя передавать ему параметры подобным образом, это не HTTP протокол, а файловая система. Вместо этого должно быть что-то наподобие:

    PHP:
    1. <?php
    2.  
    3. $_GET["dir"]="./gallery001";
    4. $_GET["rows"]=3;
    5. include "create_gallery.php";
    И еще одно: всегда используйте require, а не include, если не требуется обратное.
     
  3. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Может, я давно не спал, но... Но в чём, блин, разница? :)
    Ты хотел написать, что не нужно передавть директорию/файл через GET таким похабным ообразом - не проверяя?

    Опять таки, может, я давно не спал, но... Но нафига? :) В случае require скрипт "умрёт" не найдя ничего, в случае с include - нет. Но нафига?

    Смайлик дружбы - :D. Я не выкапываю тамогавг холовара. :)
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    lexa
    1. Разница в том, что первый способ не работает, а второй - должен.
    2. Действительно, нафига скрипту работать дальше, если части скрипта не хватает? Этакая бегающая курица с отрубленной головой ;)
     
  5. -=Р@Ф=-

    -=Р@Ф=- Активный пользователь

    С нами с:
    1 май 2008
    Сообщения:
    2
    Симпатии:
    0
    Огромное спасибо... Все пошло! Ато я 5 часов мозг ломал.... :oops:
     
  6. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    использование require вместо includ'a имеет ещё одно приемущество: если я не ошибаюсь, то при рекваире подключаемый файл компилируется сразу, по ходу компиляции основного файла. При инклюдах же, заинклюженные файлы компилируются после всей компиляции основного файла. В этом случае использование require даёт прирост производительности.
    Если я не прав - прошу меня поправить.
     
  7. eduha

    eduha Активный пользователь

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Нет. Разница лишь в типе генерируемой ошибки - если файла нет, require выдаст Fatal Error и остановит выполнение скрипта.
     
  8. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Нет. Это следствие из:
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    +Sten+
    o_O
    Хочу такой же травы, пусть Котеров поделится!
    eduha прав. Разница только в реакции на отсутствующий файл.
    Пример у меня не работает (точнее, работает как надо ;))
     
  10. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Dagdamor
    Действительно, в книге о 5 версии PHP Котеров пишет:
    Учился я по книге о 4 PHP (моя первая книга), затем и запомнил это. Видно, в 5 версии изменили include.

    Добавлено: В мануале о инклуде нашел такую строчку:
    :)
     
  11. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    +Sten+
    Я на четверке и проверял...
     
  12. Anonymous

    Anonymous Guest

    По моему скромному мнению, все же стоит
    Просто, для себя. Что бы вспомнить спустя месяц, где тут необходимый кусок скрипта, а где - вторичный.