Почему file_exists не видит картинку в папке?
Для file_exists думаю нужен полный путь от корня диска в линуксе это что то типа 
/var/www/site/public/upload/images/other/no-image.png
Пользуйтесь константами типа __DIR__
А "/public/..." - это путь относительно корня файловой системы или корня сайта? file_exists работает с ФС.