instantsoft / icms2

Self-hosted Site Management System
https://instantcms.ru
GNU General Public License v2.0
295 stars 120 forks source link

Загрузка картинок на PHP8 не работает #1447

Closed makartsoft closed 1 year ago

makartsoft commented 1 year ago

Используемая версия InstantCMS: 2.15.2 Версия PHP: 8.1.6

Как воспроизвести проблему:

  1. Взять любую новость/пост/профиль пользователя;
  2. Нажать редактировать и сменить картинку / аватар пользователя.
  3. Получить всплывающие окно с надписью "undefined".

При этом, некоторые картинки грузятся (какая логика - вообще не понятно).

При переключении сайта на php 7.4 все работает как нужно.

fuzegit commented 1 year ago

PHP 8.1.15 Всё грузится без проблем.

При этом, некоторые картинки грузятся (какая логика - вообще не понятно).

Хочется подробностей - некоторые это какие? Какие настройки пресета изображений в админке?

Что с настройками PHP:

Если стоит Nginx, что с client_max_body_size?

makartsoft commented 1 year ago

Веб сервер: Apache Версия PHP: 8.1.6, apache2handler PHP: 8.1 работает как модуль сервера Apache (mod_php) Лимит памяти: 128 Мб Макс. размер загрузки: 10 Мб post_max_size 10M upload_max_filesize 10M Установлен Zend OPcache: Да Установлен IonCube Loader: Да Установлен Zend Guard Loader: Нет MySQL 5.7 с поддержкой MyISAM и InnoDB

Все настройки пресетов стандартные (установлен дефолтный 2.15.2 с демоданными - ничего не менялось в настройках). Вот скрин присетов и скрин при попытке загрузки картинки (повторю, на php8, на 7.4 все работает). skrin1 skrin2

Пример обычной картинки, которую пытаюсь загрузить: Картинка для загрузки 1 (не грузится) Картинка для загрузки 2 (не грузится)

Пробовал на 2 разных сайтах (хостинг один, на других нет возможности проверить).

А вот на OpenServer все работает. Возможно какие-то ограничения на самом хостинге?

fuzegit commented 1 year ago

Смените формат webp в настройках пресета на любой другой и/или замените на "как исходный" и проверьте еще раз. Ну и в логах должно быть что-то на этот счёт, посмотрите на хостинге error лог.

makartsoft commented 1 year ago

Смените формат webp в настройках пресета на любой другой и/или замените на "как исходный" и проверьте еще раз. Ну и в логах должно быть что-то на этот счёт, посмотрите на хостинге error лог.

Уважаемый Fuze. Это все пробовал. Результата нет. Написал хостеру, вот что он пишет: "Помимо undefined, при загрузке файла "atom800.jpg" сервер еще отдает: Deprecated: Implicit conversion from float 138.5 to int loses precision in /home/d44/ТУТ АДРЕС МОЕГО САЙТА/WWW/system/core/images.php](http://_ТУТ АДРЕС МОЕГО САЙТА_/WWW/system/core/images.php) on line 545 Получается, код не очень совместим с PHP 8.1. Нужно либо исправить код, либо можно отключить вывод ошибок PHP в браузер"

Вот эту картинку посылал хостеру: atom800

makartsoft commented 1 year ago

Уважаемый Fuze. Это все пробовал. Результата нет.

Большое уточнение. Эта ошибка с загрузкой, если включен флаг "Включить режим отладки". Как только режим отладки отключить, то все картинки грузятся!

fuzegit commented 1 year ago

Вот теперь понятно. Попробуйте заменить файл /system/core/images.php , взяв его отсюда с гита. И проверьте еще раз, с включенной отладкой. Вроде бы это правил. https://github.com/instantsoft/icms2/blob/master/system/core/images.php

makartsoft commented 1 year ago

https://github.com/instantsoft/icms2/blob/master/system/core/images.php Заменил, ничего не изменилось. Потом проверил и оказалось, что код абсолютно такой же, как в дистрибутиве 2.15.2 (сравнил с помощью Total Commander функцией "Сравнить по содержимому")