[EVO] phpthumb и пробел в имени файла изображения

Вечер добрый!

Такая ситуация. В имена большого кол-ва изображений затесался пробел. Из-за этого сниппет phpthumb перестал подхватывать их и при обработке выводит заглушку no-image — joxi.ru/E5mdQQvHv74q21

Подскажите, можно ли заставить сниппет обрабатывать в том числе имена файлов с пробелами? Или придётся перезаливать изображения?

EVO 1.0.10-d5.2
phpthumb 1.0

18 комментариев

avatar
D phpthumb можно добавить в начало: $input = urldecode($input);
avatar
Предлагаю добавить в плагин по умолчанию ибо частая проблема )
avatar
Я не считаю это проблемой, но даже если ее решать, то может лучше не в phpthumb, а в KCFinder, который возвращает закодированные ссылки? Как было раньше, до KCFinder — с пробелом или с %20 вставлялось?
avatar
Добавлением функции urldecode() вопрос решается.
Если нужны уточнения по KCFinder, то в путь к картинке добавляется %20.
avatar
Ну, это я знаю. Вопрос, как должно быть — с %20 или с пробелом.
avatar
Насколько я понял, то должно быть с пробелом.
%20 выдаёт ошибку, которую мы решили выше с помощью urldecode() в phpthumb.
avatar
А что мешает для начала обновиться до phpthumb-а с поддержкой очередей?
avatar
Может мешать то, что практический каждый третий хостинг или не поддерживает функцию filemtime или тупит на ней по непонятным причинам — после выпадения в аут пятого сайта вернулся назад к оригинальной версии phpthumb :)
avatar
Из разряда мистики и хостигов в этом стиле. Но можно было написать коммент — добавил бы опцию в конфиг сниппета для отключения такой проверки. Просто на мой взгляд, данная версия сниппета более функциональна. И если дорабатывать — то ее. А не пилить старую, а потом упереться в ту же проблему, из-за которой пришлось велосипедить очереди.
avatar
Ну мистика не мистика, а вот такое вот частенько напрягает, когда натыкаешься при переносе файлов на хостинг заказчика неожиданно :)
Warning: filemtime() [function.filemtime]: stat failed for...


Причем однозначного ответа откуда это растет похоже не существует, а потом менять во всех местах вызова имя сниппета или менять код самого сниппета не всегда охота :) Так что функция отключения была бы очень кстати.
avatar
Немного загуглил и пришел к выводу, что эта ошибка проявляется в случаях если:
— Файл не существует
— К файлу нет доступа
— Файл размером больше 2ГБ на 32 битных системах

Судя по коду, проверки на существование нет всего в одном месте — тут
avatar
В том то и дело, что такие причины предполагают на гуглах, но, как правило, потом следует ответ «файл есть, доступен и меньше 2Гб» и дискуссия умирает, так и не дав ответа откуда эта ошибка вывалилась.

Понятно, что если оно работает на локалке и перестает работать на каком-то хостинге, то дело явно не в том, что файла не существует, а с учетом того, что обычный сниппет phpthumb тот же файл и читает и режет, то и других причин вроде «кривых путей» тоже не видится. Так что единственный выход — это таки делать обходной путь в обход функции filemtime — т.к. дело именно в ней.
avatar
Я за добавление в первую очередь в phpthumb — т.к. часто сайт просто переносится вместе с картинками и куча картинок с пробелами в именах и с кирилицей не проходят KCFinder :) Потому там не помешала бы и транслитерация на входе в phpthumb :)
avatar
Так а откуда они берутся с кириллицей, если кириллица ломала и mcpuk тоже? Тут надо писать какой-то скрипт, который бы прогонял имена файлов через stripAlias и попутно в базе менял записи.
avatar
Что-то я уже и сам запутался. Сейчас mcpuk и так при загрузке файлов прогоняет все имена через transalias, в том числе и заменят пробелы в именах на выбранные в плагине transalias символы (- _ или пусто). Так что речь идет именно о тех файлах, которые попали на сайт мимо mcpuk — а именно — через прямую загрузку на сервер (например, при переносе сайта с другой системы). Вот для этих случаев неплохо бы, чтобы phpthumb понимал и русские имена при необходимости (вернее также транслитерировал имена картинок перед обработкой).
avatar
Сейчас, к счастью, нет mcpuk'а, но KCFinder тоже не переносит кириллицу в файлах (: Поэтому если загрузить файлы с русскими буквами в именах обходным путем, то их не получится вставить с помощью файлового менеджера, поэтому при загрузке через файловый менеджер делается транслитерация. До phpthumb дело даже не дойдет.
Комментарий отредактирован 2014-11-28 14:45:23 пользователем Pathologic
avatar
Я про случай с разнесением этих файлов сразу в TV (например на старом сайте есть картинка, прикрепленная к новости или товару и мы ее имя из одной базы в другую перекидываем, а сам файл напрямую загружаем на сервер)…
Так что это до mcpuka дело не дойдет, а вот до phpthumb очень даже доходит. Понятно, что когда каждая картинка грузится руками через mcpuk, то сразу и транслитерация идет, но это не тот случай.
avatar
Проверил только что этот случай: переименовал файл на сервере в русскоеимя.jpg, вписал руками в TV и применил phpthumb — превьюшка сгенерировалась, но в ее имени вместо русских букв вообще ничего: assets/cache/images/270x120-.3df.jpg
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.