Ошибка работы 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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Отправил спасибо :)
Вместо /path/to/tmp/directory, что-то типа такого: /var/www/site_name/tmp
А phpThumb ломится в /tmp, если у него не указана правильная временная директория — именно для этого нужен первый фикс.
Главное, чтобы у других ничего не слетело!
[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/)
prntscr.com/cjt40z
Может тоже проблема с 2.5.1?
На сайте работает норм, а в админке — не грузятся