четверг, 1 августа 2013 г.

Как побороть ошибку phpThumb в MODx [OutputThumbnail() failed because !is_resource($this->gdimg_output)]

У очень многих людей, установивших MODx Revolution, возникает проблема с тем, что не показываются превью к картинкам в файловом редакторе, при этом в файле error.txt (Reports->Error log, а в русской версии Отчёт->Журнал ошибок) появляется ошибка типа:
[2013-08-01 00:02:25] (ERROR @ /connectors/system/phpthumb.php) phpThumb was unable to generate a thumbnail for: /var/www/core/cache/phpthumb/phpThumb_cache_site.ru_srcdc8485f6e9b68beb8824f8f795acc2e7_par02a1b054e8467fb1e234c8a8fd8d10d2_dat1375288827.png
[2013-08-01 00:02:25] (ERROR @ /connectors/system/phpthumb.php) Error outputting thumbnail:
OutputThumbnail() failed because !is_resource($this->gdimg_output) in file "phpthumb.class.php" on line 557
В сообществе MODx предлагается несколько способов борьбы с этим (сразу скажу, они мне не помогли и я нашел своё решение) :

  1. Разрешить использование файлов, расположенных НЕ в корневой директории. Для этого идём в настройки и ищем ключ "setting_phpthumb_allow_src_above_docroot", устанавливаем его в True (Да).


  2. В этом варианте, нужно проверить правильно ли у вас установлены права на папку core/cache/phpthumb, если директории phpthumb нету вообще, значит установлены маленькие права на папку cache.
    Самое простое, на короткое время тестирования, установить на все три директории (core / cache / phpthumb) полные права — 0777. Это позволит вам сразу понять есть ли проблема в правах на директории. 0777 это максимальные права, устанавливать их на долгое время настоятельно не рекомендуется. Если phpThumb заработает, то начните уменьшать права на папки по очереди (сначала на core, потом на cache) и найдите то сочетание прав, при которых phpThumb продолжает работать.

  3. Многие устанавливают на хостинг PHP-оптимизатор eAccelerator, который так же может приводить к проблемам с генерацией превью картинок. Для отключения eAccelerator, найдите файл eaccelerator.ini (в Debian он находится по пути /etc/php5/conf.d/) и закоментируйте строчку:
    extension="eaccelerator.so"
    должно получиться вот так:
    ;extension="eaccelerator.so"
    после этого перезагрузите Apache, командой:
    service apache2 restart

  4. Лично мне все эти способы не помогли. Причина проблемы у меня была в том, что в файле php.ini не было точно указано выделяемое количество памяти (параметр memory_limit), т.е. значение было — -1. Я проставил выставил значение
    memory_limit = 128M
    и всё заработало!

4 комментария:

  1. Друг, большое тебе человеческое спасибо! :) Весь инет облазил вдоль и поперёк, и только твой последний способ мне единственный помог. Пользуюсь Оупен-сервером, а он в последних версиях ставит memory_limit = -1. И всё, куча ошибок. Поставил 1024M — и всё как по маслу. Ещё раз спасибо))

    ОтветитьУдалить
  2. Пост на миллион! Превьюшки заработали.

    ОтветитьУдалить
  3. 2 дня боролся.. Спасибо тебе, огромное, за это решение!!! Уже думал переделывать заново на локалке, может какой-то плагин зарубил. Что удивляло, на продакшене работают превьюхи без проблем :)

    ОтветитьУдалить
  4. +1 Спасибище тебе! Давнол с модиксом не работал, тут халтурка подвалила, решил по быстрому сделать, скачал дистр, а превьюхи не генеряться... Благо нашёл твою запись)

    ОтветитьУдалить