В MiniShop2 не создаются превью
После обновления MODX до версии 2.2.7 и MiniShop2 до версии 2.0.0-pl2 не генерировались превью галереи товаров. В логах это:
[2013-04-14 13:53:00] (ERROR @ /assets/components/minishop2/connector.php) Could not generate thumbnail for "/assets/images/products/59/cc408f44783eaa3d1a7bb0d38b3582e0.jpg". Array
(
[0] => phpThumb() v1.7.9-200712090829 in file "phpthumb.class.php" on line 216
[1] => setCacheDirectory() starting with config_cache_directory = "/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb/" in file "phpthumb.class.php" on line 919
[2] => setting config_cache_directory to realpath(/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb) = "/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb" in file "phpthumb.class.php" on line 947
[3] => setSourceFilename(/tmp/uf_RMMwPC) set $this->sourceFilename to "/tmp/uf_RMMwPC" in file "phpthumb.class.php" on line 243
[4] => $AvailableImageOutputFormats = array(text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 884
[5] => $this->thumbnailFormat set to $this->config_output_format "jpeg" in file "phpthumb.class.php" on line 895
[6] => $this->thumbnailFormat set to $this->f "jpeg" in file "phpthumb.class.php" on line 902
[7] => $this->thumbnailQuality set to "99" in file "phpthumb.class.php" on line 912
[8] => !$this->config_allow_src_above_docroot therefore setting "/tmp/uf_RMMwPC" (outside "/var/www/streamfilters/streamfilters.com.ua") to null in file "phpthumb.class.php" on line 1066
[9] => $this->sourceFilename set to "" in file "phpthumb.class.php" on line 813
[10] => phpThumb() v1.7.9-200712090829
"" does not exist in file "phpthumb.class.php" on line 3647
[11] => setCacheDirectory() starting with config_cache_directory = "/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb" in file "phpthumb.class.php" on line 919
[12] => setting config_cache_directory to realpath(/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb) = "/var/www/streamfilters/streamfilters.com.ua/core/cache/phpthumb" in file "phpthumb.class.php" on line 947
[13] => !$this->config_allow_src_above_docroot therefore setting "/tmp/uf_RMMwPC" (outside "/var/www/streamfilters/streamfilters.com.ua") to null in file "phpthumb.class.php" on line 1066
[14] => SetCacheFilename() _src set from md5($this->sourceFilename) "" = "d41d8cd98f00b204e9800998ecf8427e" in file "phpthumb.class.php" on line 3077
[15] => SetCacheFilename() _par set from md5(_bg000000_farC_h270_w360_dpi150_q99) in file "phpthumb.class.php" on line 3110
[16] => starting ExtractEXIFgetImageSize() in file "phpthumb.class.php" on line 2897
[17] => GetImageSize("") failed in file "phpthumb.class.php" on line 2920
[18] => $this->useRawIMoutput=false because "bg" is set in file "phpthumb.class.php" on line 1226
[19] => $this->useRawIMoutput=false after checking $UnAllowedParameters in file "phpthumb.class.php" on line 1232
[20] => ImageMagickThumbnailToGD() aborting because $this->sourceFilename is empty in file "phpthumb.class.php" on line 1279
[21] => ImageMagickThumbnailToGD() failed in file "phpthumb.class.php" on line 2927
[22] => SetOrientationDependantWidthHeight() starting with ""x"" in file "phpthumb.class.php" on line 2876
[23] => SetOrientationDependantWidthHeight() setting w="360", h="270" in file "phpthumb.class.php" on line 2892
[24] => EXIF thumbnail extraction: (size=0; type=""; 0x0) in file "phpthumb.class.php" on line 2979
[25] => starting SourceImageToGD() in file "phpthumb.class.php" on line 3229
[26] => $this->useRawIMoutput=false because "bg" is set in file "phpthumb.class.php" on line 1226
[27] => $this->useRawIMoutput=false after checking $UnAllowedParameters in file "phpthumb.class.php" on line 1232
[28] => ImageMagickThumbnailToGD() aborting because $this->sourceFilename is empty in file "phpthumb.class.php" on line 1279
[29] => Not using EXIF thumbnail data because $this->exif_thumbnail_data is empty in file "phpthumb.class.php" on line 3278
[30] => $this->gdimg_source is still empty in file "phpthumb.class.php" on line 3330
[31] => ImageMagickThumbnailToGD() failed in file "phpthumb.class.php" on line 3332
[32] => phpThumb() v1.7.9-200712090829
Unknown image type identified by "" () in SourceImageToGD()[3444] in file "phpthumb.class.php" on line 3647
[33] => SourceImageToGD() failed in file "phpthumb.class.php" on line 323
)Ответ прост, в настройках системы, в разделе phpThumb, параметр phpthumb_allow_src_above_docroot необходимо выставить в режим «Да» Комментарии: 16
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Ошибка у меня вышеозвученная, не лечится ничем, уже 3 раза все переставляли, по разному меняли и т.п.
Подскажите хоть в какую сторону копать.
1) Сейчас установлена чистая (нулевая) 2.2.7 поставлены только 2 расширения pdo+minishop
2) Создаем папку товаров, добавляем товар, пытаемся загрузить картинку.
Получаем:
Картинка загрузилась, а папки для превьюшек не создались, соответственно и они сами тоже нет.
В логах 1:1 что и выше, только домен другой.
Проблемы может быть такие
1) phpTumb не может записать поток во временную переменную сервера /var/tmp — странно потому что там у меня 777
2) phpTumb не может записать файл в кеш модХ, т.е. по пути /core/cache/phpthumb — тоже выставил всей цепочке 777
3) phpTumb не может создать папки для превьюшек — я правда думаю что до этого дело не доходит вообще.
Что думаете?
файл создан, но нулевого размера. Права 777, место позволяет.
Все, дальше никаких выводов и предположений сделать не могу. Почему он не создается.
Но хоть понял почему переменная называется что нужно включать «разрешить_положить_исходник_выше_рута».
Поможите други! плиз
Больше ничего не могу предложить. Убедиться в работоспособности можно на modx-test.com
Сервер тот же, домены с одинаковыми настройками, только там где чистая сборка поддомен shop… вот и вся разница
Судя по логу, ругань идет именно на то, что phpThumb не может создать файл выше корня сайта. Права в порядке, понятно, но возможно что у вас юзеру сайта вообще запрещено выходить наружу — chroot.
Попробуй изменить конфигурацию php, выстави параметр upload_tmp_dir внутри директории сайта.
Еще проверь, работает ли сниппет phpthumbof, или такая же ругань?
Я почти достиг цели, но вот одно никак не пойму.
При формировании превьюшки из МиниШоп ей дается некое имя (функция setSourceFilename) — и формирует путь до исходника, что нибудь типа uf_dnAmer, по идее он должен записывать в директорию upload_tmp_dir, которая указана в настройках PHP
в дампе выше это сточка [3] там путь setSourceFilename(/tmp/uf_RMMwPC)
— Но у меня ($filename) формируется /var/tmp/uf_dnAmer и я нигде не могу найти, где это можно поменять, а точнее совсем убрать, поэтому что это не правильный путь,
в окружении пхп путь до временной стоит /tmp/www
А откуда берется /var/tmp/, не могу разобраться, смотрел везде, в том числе и /core/model/phpthumb/
От этого проблема и формируется, дальше идет функция ResolveFilenameToAbsolute($filename)
И она мне собирает путь: $AbsoluteFilename = $this->config_document_root.$filename;
Вот как то так
Думаю, это phpThumb не может понять твоё системное окружение.
Хотя пхп_инфо и пишет что все одинаково, но для имясайта.ру ставишь и все работает, даже без свойства «Да» что в первом сообщении, а если заливаешь на shop.имясайта.ру — не работает phpThumb
Временно решили сделать магазин на имясайта.ру/shop/ а дальше может разрулится что-нибудь.
Спасибо за поддержку
<Directory /var/www/example.com>
php_admin_value open_basedir /var/www/example.com/:/tmp/:/
Order deny,allow
Allow from all
Options -Indexes
Она разрешает выходить за пределы докрута хттп сервера. Мне помогло. С точки зрения безопасности не очень правильно ее включать, но на дефолтных настройках работает.