Ошибка работы phpThumb в MODX 2.5.1

В MODX 2.5.1 обновили phpThumb, после чего некоторые дополнения стали неверно работать с картинками.

Проблема встречается на серверах с включенным open_basedir (запрет скриптам выходить из директории сайта) из-за того, что авторы MODX не указывают временную директорию при инициализации.

Для исправления нужно добавить
$this->setParameter('config_temp_directory',$cachePath);
на 34 строке файла core/model/phpthumb/modphpthumb.class.php

Вторая проблема касается уже непосредственно дополнений, таких как phpthumbon. Конкретно он не вызывает метод initialize() при запуске класса modPhpThumb, в результате чего настройки директорий вообще не выставляются.

Здесь нужно добавить
$this->_phpThumb->initialize();
на 165 строке файла core/components/phpthumbon/model/phpthumbon/phpthumbon.class.php

Если вы видите проблемы с генерацией картинок на MODX 2.5.1 — попробуйте внести эти изменения или вернуться на 2.5.0 обновиться на 2.5.2.

Pull-request в репозиторий MODX и текущему автору phpthumbon — отправил.

Обновлено 02.10.2016


Для работы превью в Gallery нужно зайти в файл core/components/gallery/processors/web/phpthumb.php и заменить там
if (!class_exists('modPhpThumb', false)) {
    if (!$modx->loadClass('modphpthumb', MODX_CORE_PATH . 'model/phpthumb/', true, true)) {
        $modx->log(modX::LOG_LEVEL_ERROR, '[phpThumbOf] Could not load modPhpThumb class.');
        return '';
    }
}
на строке 14, а потом
$phpThumb = new modPhpThumb($modx); // unfortunately we have to create a new object for each image!
$phpThumb->initialize();
на строке 83.

Как видим, даже классические общепринятые дополнения MODX могут неправильно работать с системными модулями.
Василий Наумкин
16 сентября 2016, 13:22
modx.pro
14
5 163
+11

Комментарии: 18

Владимир
16 сентября 2016, 16:33
0
Да-да! Это досадная ерундовина уже заставила меня откатывать назад к 2.5.0.
Отправил спасибо :)
Марат Марабар
16 сентября 2016, 16:43
0
Я у себя вылечил так: в php.ini указал путь до общей временной папки
sys_temp_dir = /path/to/tmp/directory
Вместо /path/to/tmp/directory, что-то типа такого: /var/www/site_name/tmp
    Василий Наумкин
    16 сентября 2016, 16:47
    0
    Включенный open_basedir подразумевает собственную временную директорию внутри рабочей директории каждого сайта, а не одну общую.

    А phpThumb ломится в /tmp, если у него не указана правильная временная директория — именно для этого нужен первый фикс.
      Марат Марабар
      16 сентября 2016, 16:56
      0
      Да-да, я ошибся. Не в php.ini в /etc/php/7.0/fpm/pool.d/site_name.conf (посмотрел), т.е. не общий временный каталог а для каждого сайта.
      php_admin_value[sys_temp_dir] = /var/www/site_name/tmp
        Василий Наумкин
        16 сентября 2016, 17:04
        0
        Нужно иметь в виду, что эта настройка появилась только в PHP 5.5.
    Павел Гвоздь
    16 сентября 2016, 17:47
    +4
    Спасибо! Обновил пакет в Modstore.
      Василий Наумкин
      16 сентября 2016, 17:50
      +2
      В репозитории MODX уже тоже смерджили, так что будет исправлено в 2.5.2
        TITAN-UZ
        29 сентября 2016, 04:29
        0
        Павел если ест возможность добавте выбор папки для phpthumbon.images_dir вне assets хотел перевести изображении на субдомен!
      Василий Столейков
      16 сентября 2016, 18:04
      0
      Спасибо! Очень вовремя!
        Abu
        Abu
        17 сентября 2016, 15:47
        0
        Компонент Gallery глючит несмотря на изменения, не хочет показывать эскизы в админке.

        [2016-09-17 15:45:41] (ERROR @ /var/www/site/site.ru/core/model/phpthumb/phpthumb.class.php: 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/site/)
          Василий Наумкин
          17 сентября 2016, 16:18
          0
          Нужно проверить как у него дела с инициализацией modPhpThumb.
          Андрей
          19 сентября 2016, 16:34
          0
          А у меня с Gallery какая-то беда. Фото в альбом загружается, а картинки пустые.
          prntscr.com/cjt40z
          Может тоже проблема с 2.5.1?
            Владислав
            18 ноября 2016, 10:08
            0
            Аналогично.
            На сайте работает норм, а в админке — не грузятся
          Василий Краковецкий
          05 октября 2016, 12:52
          1
          0
          github.com/modxcms/pThumb/pull/45 — патч для pthumb
            smeh
            15 августа 2017, 19:47
            0
            Спасибо автору, все заработало после изменений в файле phpthumb.php, как указано в конце статьи.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18