3.2. Периодически пользователи жалуются, что не могут загрузить фото-вложения на форум с мобильных устройств. Чемпион по проблемам Опера, но и Хрому достается. То треугольник с восклицательным знаком после загрузки, то "ошибка http". Симптомы проявляются на фото, снятые самим телефоном и на определенных устройствах-версиях андроида. Отключение в админке проверки mime ничего не дает. Помнится писали про 3.0, что проверка mime еще зашита в functions_upload.php и даже пробегал фикс: проверяем юзерагент и если андроид, то mime-type определяется по расширению файла. Но в 3.2 function_upload.php я так понял убрана. Куда здесь смотреть?
PS: Расширения типа image rotator не причем. При его включении-отключении ситуация аналогичная.
Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Загрузка фото с мобильных устройств
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
-
- phpBB 2.0.7
- Сообщения: 566
- Стаж: 7 лет 4 месяца
- Благодарил (а): 278 раз
- Поблагодарили: 65 раз
Re: Загрузка фото с мобильных устройств
В логах сервера тишина. Не подскажите как работать с дебагом? Я его включил. Внизу появилась ссылка sql. Где смотреть ошибки? По ссылке sql вроде ошибок нет, в админке в разделе лог ошибок тоже. Где-то еще логируются?
При загрузке проблемных файлов с компа та же проблема - "Вы попытались отправить недопустимый тип файла изображения."
Файл из галереи телефона типа IMG_20170422_163300.jpg. Самое интересное, если расширение изменить на png, то все загружается нормально.
На мой дилетантский взгляд проблема с определением mime-type некоторых графических файлов Где в коде форума еще его проверка, т.к. отключение-включение в админке ничего не дает. Я уже писал, раньше на 3-ке подобное как-то решалось:
https://tracker.phpbb.com/browse/PHPBB3-11148
потом вроде в 3.1 пофиксили, но где теперь в 3.2 код проверки?
При загрузке проблемных файлов с компа та же проблема - "Вы попытались отправить недопустимый тип файла изображения."
Файл из галереи телефона типа IMG_20170422_163300.jpg. Самое интересное, если расширение изменить на png, то все загружается нормально.
На мой дилетантский взгляд проблема с определением mime-type некоторых графических файлов Где в коде форума еще его проверка, т.к. отключение-включение в админке ничего не дает. Я уже писал, раньше на 3-ке подобное как-то решалось:
https://tracker.phpbb.com/browse/PHPBB3-11148
потом вроде в 3.1 пофиксили, но где теперь в 3.2 код проверки?
-
- Former team member
- Сообщения: 3468
- Стаж: 9 лет 11 месяцев
- Благодарил (а): 41 раз
- Поблагодарили: 830 раз
Re: Загрузка фото с мобильных устройств
Vlad__, mimetype_guesser там же и находится, где раньше.
А классы для работы с загруженными файлами раскидали по отдельным файлам с говорящими названиями, найти их совсем не сложно.
А классы для работы с загруженными файлами раскидали по отдельным файлам с говорящими названиями, найти их совсем не сложно.
-
- phpBB 2.0.7
- Сообщения: 566
- Стаж: 7 лет 4 месяца
- Благодарил (а): 278 раз
- Поблагодарили: 65 раз
Re: Загрузка фото с мобильных устройств
LavIgor, не подскажите, где там хотя бы временно отключить проверку? Чтобы проверить из-за этого или нет.
Вот тут обсуждалось уже что-то подобное: Ошибка вставки фотографий
Вот аналогичная тема: Проблема с загрузкой вложений
У меня фото из архива в ней тоже не загружаются.
Или открыть в графическом редакторе и пересохранить. С помощью этого сервиса: https://www.imgonline.com.ua/delete-exif.php удалил метаданные изображения - все загрузилось как нужно. Дело в метаданных?
Вот тут обсуждалось уже что-то подобное: Ошибка вставки фотографий
По идее, EXIF-заголовки должны идти первыми в JPEG/TIFF файлах, генерируемых фотоаппаратами. Но, к сожалению, каждый производитель имеет свое представление того, каким образом компоновать метаданные изображения. Поэтому будьте готовы к ситуации, когда перед Exif-заголовком есть еще что-то.
Оно? Как бороться? Я не могу объяснять каждому пользователю, что вам нужно пересохранить, ресайзить фото, удалять метаданные - в ответ услышу, что за ерунда и что за глючный форум!Конкретные модели могут генерировать jpg, при попытке получения метаданных из которых, может возникнуть ситуация, когда функция exif_read_data() вернет массив, содержащий черти-что и сгенерирует ошибку, которую не сможет спарсить plupload (ну как-то так).
Вот аналогичная тема: Проблема с загрузкой вложений
У меня фото из архива в ней тоже не загружаются.
-
- phpBB 2.0.7
- Сообщения: 566
- Стаж: 7 лет 4 месяца
- Благодарил (а): 278 раз
- Поблагодарили: 65 раз
Re: Загрузка фото с мобильных устройств
Проблему решил заменой в filespec.php вот этого куска кода:
На почти аналогичный из functions_uoload.php 3.1, заменив только $types = fileupload::image_types(); на $types = upload::image_types();
Все теперь загружается как надо, даже проблемные изображения. Я прекрасно понимаю, что совсем некорректно вносить изменения в файлы движка форума, но какой у меня был вариант? Ждать месяцами когда пофиксят и выслушивать претензии пользователей?
Прошу специалистов посмотреть на эти листинги и сказать все ли правильно в моем решении откатится на старый кусок кода, нет ли тут подводных камней и дополнительных глюков, и в чем была и есть проблема? А также пофиксить этот баг в следующей версии.
Код: Выделить всё
// Get mimetype of supplied file
$this->mimetype = $this->get_mimetype($this->destination_file);
if ($this->is_image() && !$skip_image_check)
{
$this->width = $this->height = 0;
$this->image_info = $this->imagesize->getImageSize($this->destination_file, $this->mimetype);
if ($this->image_info !== false)
{
$this->width = $this->image_info['width'];
$this->height = $this->image_info['height'];
// Check image type
$types = upload::image_types();
if (!isset($types[$this->image_info['type']]) || !in_array($this->extension, $types[$this->image_info['type']]))
{
if (!isset($types[$this->image_info['type']]))
{
$this->error[] = $this->language->lang('IMAGE_FILETYPE_INVALID', $this->image_info['type'], $this->mimetype);
}
else
{
$this->error[] = $this->language->lang('IMAGE_FILETYPE_MISMATCH', $types[$this->image_info['type']][0], $this->extension);
}
}
// Make sure the dimensions match a valid image
if (empty($this->width) || empty($this->height))
{
$this->error[] = $this->language->lang('ATTACHED_IMAGE_NOT_IMAGE');
}
}
else
{
$this->error[] = $this->language->lang('UNABLE_GET_IMAGE_SIZE');
}
}
$this->file_moved = true;
$this->additional_checks();
unset($this->upload);
return true;
}
Код: Выделить всё
// Get mimetype of supplied file
$this->mimetype = $this->get_mimetype($this->destination_file);
if ($this->is_image() && !$skip_image_check)
{
$this->width = $this->height = 0;
if (($this->image_info = @getimagesize($this->destination_file)) !== false)
{
$this->width = $this->image_info[0];
$this->height = $this->image_info[1];
if (!empty($this->image_info['mime']))
{
$this->mimetype = $this->image_info['mime'];
}
// Check image type
$types = upload::image_types();
if (!isset($types[$this->image_info[2]]) || !in_array($this->extension, $types[$this->image_info[2]]))
{
if (!isset($types[$this->image_info[2]]))
{
$this->error[] = sprintf($user->lang['IMAGE_FILETYPE_INVALID'], $this->image_info[2], $this->mimetype);
}
else
{
$this->error[] = sprintf($user->lang['IMAGE_FILETYPE_MISMATCH'], $types[$this->image_info[2]][0], $this->extension);
}
}
// Make sure the dimensions match a valid image
if (empty($this->width) || empty($this->height))
{
$this->error[] = $user->lang['ATTACHED_IMAGE_NOT_IMAGE'];
}
}
else
{
$this->error[] = $user->lang['UNABLE_GET_IMAGE_SIZE'];
}
}
$this->file_moved = true;
$this->additional_checks();
unset($this->upload);
return true;
}
Все теперь загружается как надо, даже проблемные изображения. Я прекрасно понимаю, что совсем некорректно вносить изменения в файлы движка форума, но какой у меня был вариант? Ждать месяцами когда пофиксят и выслушивать претензии пользователей?
Прошу специалистов посмотреть на эти листинги и сказать все ли правильно в моем решении откатится на старый кусок кода, нет ли тут подводных камней и дополнительных глюков, и в чем была и есть проблема? А также пофиксить этот баг в следующей версии.
-
- phpBB 2.0.7
- Сообщения: 566
- Стаж: 7 лет 4 месяца
- Благодарил (а): 278 раз
- Поблагодарили: 65 раз
Re: Загрузка фото с мобильных устройств
Не совсем. Теперь иногда ( логику не уловил, по-моему когда размер стороны изображения х00 (800,1000...) и есть EXIF на некоторых загрузках под пользователем (под админом почему-то все нормально) выскакивает такое окошко и картинка не загружается: "Размеры изображения должны быть не менее 0 пикселей×0 пикселей и не более 1280 пикселей×1280 пикселей. Размер отправленного изображения — 1536 пикселей×2304 пикселя." Хотя размер загружаемого изображения 600х900. Его можно открыть в графическом редакторе, пересохранить и станет все нормально. Интуитивно опять поменял кусок кода на более старый от 3.1 как в моем сообщении выше - все стало без проблем. Хотя судя по всему причина не там. Код остался такой же как в 3.2.0. Видимо что-то добавили, чтобы он отрабатывал как нужно, но как обычно вылез новый баг. Проблема уже не касается мобильных устройств, это происходит и на десктопе.
-
- phpBB 2.0.7
- Сообщения: 566
- Стаж: 7 лет 4 месяца
- Благодарил (а): 278 раз
- Поблагодарили: 65 раз
Re: Загрузка фото с мобильных устройств
В общем, сузил правки. Файл filespec.php. Вот этот код:
меняем на:
и ниже в пяти местах image_info['type'] на image_info[2]
Все загружается нормально. В архиве проблемный файл. Объясните, что меняют эти правки?
Код: Выделить всё
$this->image_info = $this->imagesize->getImageSize($this->destination_file, $this->mimetype);
if ($this->image_info !== false)
{
$this->width = $this->image_info['width'];
$this->height = $this->image_info['height'];
Код: Выделить всё
if (($this->image_info = @getimagesize($this->destination_file)) !== false)
{
$this->width = $this->image_info[0];
$this->height = $this->image_info[1];
if (!empty($this->image_info['mime']))
{
$this->mimetype = $this->image_info['mime'];
}
Все загружается нормально. В архиве проблемный файл. Объясните, что меняют эти правки?
У вас нет необходимых прав для просмотра вложений в этом сообщении.