Ошибка работы phpThumb в MODX 2.5.1
В MODX 2.5.1 обновили phpThumb, после чего некоторые дополнения стали неверно работать с картинками.
Проблема встречается на серверах с включенным open_basedir (запрет скриптам выходить из директории сайта) из-за того, что авторы MODX не указывают временную директорию при инициализации.
Для исправления нужно добавить
Вторая проблема касается уже непосредственно дополнений, таких как phpthumbon. Конкретно он не вызывает метод initialize() при запуске класса modPhpThumb, в результате чего настройки директорий вообще не выставляются.
Здесь нужно добавить
Если вы видите проблемы с генерацией картинок на MODX 2.5.1 — попробуйте внести эти изменения иливернуться на 2.5.0 обновиться на 2.5.2.
Pull-request в репозиторий MODX и текущему автору phpthumbon — отправил.
Для работы превью в Gallery нужно зайти в файл core/components/gallery/processors/web/phpthumb.php и заменить там
Как видим, даже классические общепринятые дополнения MODX могут неправильно работать с системными модулями.
Проблема встречается на серверах с включенным 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 — попробуйте внести эти изменения или
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 могут неправильно работать с системными модулями.
Комментарии: 18
Да-да! Это досадная ерундовина уже заставила меня откатывать назад к 2.5.0.
Отправил спасибо :)
Отправил спасибо :)
Получил, на здоровье!
Я у себя вылечил так: в php.ini указал путь до общей временной папки
sys_temp_dir = /path/to/tmp/directory
Вместо /path/to/tmp/directory, что-то типа такого: /var/www/site_name/tmp
Включенный open_basedir подразумевает собственную временную директорию внутри рабочей директории каждого сайта, а не одну общую.
А phpThumb ломится в /tmp, если у него не указана правильная временная директория — именно для этого нужен первый фикс.
А phpThumb ломится в /tmp, если у него не указана правильная временная директория — именно для этого нужен первый фикс.
Да-да, я ошибся. Не в php.ini в /etc/php/7.0/fpm/pool.d/site_name.conf (посмотрел), т.е. не общий временный каталог а для каждого сайта.
php_admin_value[sys_temp_dir] = /var/www/site_name/tmp
Нужно иметь в виду, что эта настройка появилась только в PHP 5.5.
Спасибо! Обновил пакет в Modstore.
В репозитории MODX уже тоже смерджили, так что будет исправлено в 2.5.2
Павел если ест возможность добавте выбор папки для phpthumbon.images_dir вне assets хотел перевести изображении на субдомен!
Лучше отправляйте PR — github.com/gvozdb/phpthumbon :)
Главное, чтобы у других ничего не слетело!
Главное, чтобы у других ничего не слетело!
Спасибо! Очень вовремя!
Компонент 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/)
[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/)
Нужно проверить как у него дела с инициализацией modPhpThumb.
А у меня с Gallery какая-то беда. Фото в альбом загружается, а картинки пустые.
prntscr.com/cjt40z
Может тоже проблема с 2.5.1?
prntscr.com/cjt40z
Может тоже проблема с 2.5.1?
Аналогично.
На сайте работает норм, а в админке — не грузятся
На сайте работает норм, а в админке — не грузятся
Заметку слабо до конца прочитать?
github.com/modxcms/pThumb/pull/45 — патч для pthumb
Спасибо автору, все заработало после изменений в файле phpthumb.php, как указано в конце статьи.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.