После обновления до MODX 2.8.6 перестали отображаются картинки (битые превью) в админке.

MODX Revo

Сегодня обновил один из сайтов modx до 2.8.6 столкнулся с проблемой: все изображения (превью) в админке (во вкладке файлы и в файловом менеджере стали битыми):

битые превью в админке

при этом во Frontend все отлично.

В общем это обновление пососало немного крови:

Как пытался решать проблему

Первым делом посмотрел логи — там пусто, посмотрел консоль браузера — тоже ничего интересного. Потом проверил права на файлы (644) и папки (755) — норм, полностью очистил кэш как в админке (Управление — Очистить кэш + Перезагрузить права доступа + удаление всего из core/cache/) так и в браузере —  не помогло.

У сайта закаленный движок (системные каталоги переименованы и т.д., кому интересно зачем и почему смотрите: MODX безопасность) — думаю может в этом дело, т.к. в тройке это уже нельзя переименовывать. В общем решил для пробы обновить еще 1 сайт (тоже с закалкой и на этом же хостинге), обновил и там все чудесно.

Ладно думаю может обновления криво встало, залил еще раз MODX Advansed и перезапустил обновление (быстрое) — проблему не решило. Что за х.. не пойму.

Скачал обычный традиционный modx (переименовал у него все каталоги системные, в такие же имена как на сайте) и залил все поверх моих фалов. Запустил установщик и в этот раз уже выбрал расширенное обновление (где нужно указывать доступ к базе), сайт обновился — но проблема не решилась.

Полез искать ответы в интернете, нашёл следующие пути решения.

Варианты решения проблемы из интернета

1. Выключить на хостинге режим Safe Mode (в php) — сразу отбросил т.к. на всех сайтах которые там норм, проблема только на 1м).

2. Настройка источников файлов (Медиа -> Источники файлов): у дефолтного «Filesystem» значение параметра «basePath» должно быть пустым. У не дефолтных можно в конце поставить слэш (если его нет), например: было assets/img, стало assets/img/

3. Для тех у кого после переноса такая проблема: проверяем правильность всех путей в core/config/config.inc.php, особенно этих:

$modx_core_path=
$modx_processors_path=
$modx_connectors_path=
$modx_manager_path=
$modx_base_path=
$modx_assets_path=

От себя еще добавлю что б базе тоже нужно менять пути (об этом мало где говорят).

В общем все оказалось намного проще, в движке обновили phpThumb до 1.7.21

Исправления движка

А он как-то плохо стал дружить с PHP < 8. Отсюда вытекает банальное решение проблемы: зайдите на хостинг и смените версию PHP до 8.0 и проблема решена*.

Проблема решена

Пробовал PHP 8.1 — не все превью работают, в 8.2. — почти все.

*Вместе с решением это проблемы вы скорее всего получите новые проблемы (если у вас не сайт визитка), в консоль начнут сыпаться ошибки: PHP warning …. с ними уже сложнее.

В общем решил пока откатиться назад (благо хостинг делает авто бэкапы) до 2.8.5 и вернуть php 7.4 — это так сказать альтернативное решение проблемы.

Вот еще пару альтернатив, чтобы не откатывать сайт назад и не переходить на php8:

файле core/model/phpthumb/phpthumb.class.php на 317 строке убираем слово mixed.
Т.е. заменяем:

public function __set(string $name, mixed $value): void {

на

public function __set(string $name, $value): void { ()

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 7 оценок, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Ярослав

    Оо, спасибо, помогло =))

    Ответить
    1. Алексей автор

      Пожалуйста)

      Ответить
  2. Константин

    Спасибо огромное Алексей за труд. Все заработало, но не повлияет ли удаление mixed на работу чего то другого?

    Ответить
    1. Алексей автор

      Пожалуйста. После удаления mixed проблем не замечено

      Ответить