За последние 24 часа нас посетили 20147 программистов и 1723 робота. Сейчас ищут 1548 программистов ...

Как все-таки работает file_exists

Тема в разделе "Прочие вопросы по PHP", создана пользователем AlexGousev, 15 май 2006.

  1. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Столкнулся с проблемой...

    Исходные данные:
    1. Есть переменная в которой хранится абсолютный путь до директории с картинками: $imageDir;
    2. Есть предположение, что в этой директории хранится изображение с именем $fileName.

    Задача:
    Если файл есть: <img src="...
    Если нет: ну и ладно.

    Хочется сделать просто:
    Код (Text):
    1.  
    2. if (file_exists($imageDir.$fileName))
    3. echo '<img src="'.$imageDir.$fileName.'">';
    Файл есть. Т.е. если не делать проверку, а просто писать
    Код (Text):
    1.  
    2. echo '<img src="'.$imageDir.$fileName.'">';
    то изображение browser покажет.

    Но вот file_exists возвращает false.

    Да, еще момент: все запущено на платформе windows. Домой приеду - посмотрю как оно себя в Linux ведет.

    Вопросов несколько:
    1. Сталкивался кто-нибудь?
    2. Можно ли посмотреть ошибку, если она возникла?

    Пока писал проверил еще одну вещь: если указать относительный путь к файлу, то все работает нормально.

    Сорри, если слишком много написал :oops:
     
  2. Mavir

    Mavir Guest

    Посмотри, что возращает $imageDir.$fileName. Возможно $imageDir не оканчивается слешем, поэтому получается не правильный путь
     
  3. wolandino

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

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    не сталкивался, заглянул в мануал, заинтересовала строка:
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    AlexGousev

    у тебя путь не абсолютный, а ОТНОСИТЕЛЬНЫЙ и относительный он от корня сайта по HTTP протоколу.

    надо еще к этому пути добавить путь от корня файловой системы, т.к. file_exeists() работает с фмайловой системой.

    $ROOT_DIR = '/www/www.mysite.ru';
    $FOTO_DIR = '/images';
    $IMAGE = '/me.jpg';

    $filename = $ROOT_DIR.$FOTO_DIR.$IMAGE;

    усек?

    p.s. обрати внимание на начальные слеши у переменных ...
     
  5. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Да, пока ехал домой тоже такая мысля возникла. Спасибо, работает.
     
  6. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    В мануал я в первую очередь... дело, действительно, не в этом.
     
  7. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Кстати, вот именно так у меня и не работает:
    т.е. мой $imageDir - это '/www/www.mysite.ru/images/'
    Это как раз и получается относительный адрес в ФАЙЛОВОЙ системе.

    А работает вот так (вот это АБСОЛЮТНЫЙ адрес в ФАЙЛОВОЙ системе):
    Код (Text):
    1.  
    2. $_SERVER["DOCUMENT_ROOT"].$imageDir.$name
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    AlexGousev

    ну ты выведи полный путь и проверь есть ли такой файл руками.

    а какую ошибку возвращает?
     
  9. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    440hz

    Ответ на свою задачу уже написал...
    Спасибо.