@3dben

Почему file_exists не видит картинку в папке?

Для начала хочу сказать, что с загрузкой изображения в папку и записью в БД проблем не возникает, но вот отображение...

В общем есть у меня вот такой метод. Из кода ниже видно, что идёт проверка на существование картинки. Если таковая имеется, то функция должна вернуться её путь ($path), а если нет, то возвращается путь картинки с надписью no-image.

В переменную $data попадает имя картинки из БД (вот воьюшке это так ), а $folder нужна чтобы указать другую папку, допустим для загрузки аватарок, или картинок записей блога)

.
function getImage($data,$folder = 'products'){

        $path = "/public/upload/images/{$folder}/{$data}.jpg";

        if (file_exists($path)){
            return $path;
        }else{
            return "/public/upload/images/other/no-image.png";
        }
    }


Вот в чём проблема, если я использую file_exists($path) то функция не находит изображения в папке продуктов и выдаёт мне изображение no-image.png. Но в случае isset($path) картинка (каким-то чудом) в папке находиться и отображается, а вот если создать запись без картинки(в случае isset($path)) то no-image.png не загружается.

Запись в БД выглядит так:
INSERT INTO `products` (`id`, `img`, `title`, `descr`, `full_text`) VALUES
(1, 'nvg3fo4jpitg', 'Заголовок', 'Краткое описание', 'Полное описание');


Что-то я уже ничего не понимаю. Где я сделал ошибку? Помогите =)
  • Вопрос задан
  • 1100 просмотров
Пригласить эксперта
Ответы на вопрос 3
@sidni
Php Developer
Для file_exists думаю нужен полный путь от корня диска в линуксе это что то типа
/var/www/site/public/upload/images/other/no-image.png
Пользуйтесь константами типа __DIR__
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А "/public/..." - это путь относительно корня файловой системы или корня сайта? file_exists работает с ФС.
Ответ написан
@seqular
Сисадмин
Выведите промежуточное состояние $path куда-нибудь в отладочный файл, посмотрите, чему равно. Точно ли картинка в базе хранится в таком виде? Может у вас загружена в папке png, а вы ему принудительно расширение jpg даёте? Картинки загружались веб-сервером или прямым копированием? Может быть стоит там владелец какой-нибудь root и права на чтение нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы