PHP-FPM и PHP выполнение дает разные результаты

Я использовал докер-контейнер со встроенным сервером php для разработки. Сейчас мы создаем тестовую среду и хотели использовать php-fpm . Все прошло нормально, и все работает, как ожидалось, с одним отличием - ImageMagick.

Одна и та же команда, выполняемая со встроенного сервера php и php-fpm , дает разные результаты:

При преобразовании изображений с помощью встроенного сервера он работает нормально, но при использовании php-fpm я получаю:

convert: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/504.
convert: no images defined `-' @ error/convert.c/ConvertImageCommand/3258.

Это действительно неприятно, потому что это тот же контейнер, тот же php , тот же php.ini.

РЕДАКТИРОВАТЬ: Используемая команда:

shell_exec("/usr/bin/convert -thumbnail "50x50+0+0" /app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png -");

EDIT2: Я пробовал выполнить что-то «простое», и вот результат:

‌‌shell_exec("/usr/bin/identify");
‌Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org[...]

‌‌shell_exec("ls /app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png");
/app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png

‌‌shell_exec("/usr/bin/identify /app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png");
‌null

EDIT3:

‌‌shell_exec("/usr/bin/identify /app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png 2>&1");
‌identify-im6.q16: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/504.

при выполнении непосредственно в оболочке:

/usr/bin/identify /app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png 2>&1
/app/assets/uploads/super_e55d4fbf182b582f5bb1_bottle05.png PNG 520x1020 520x1020+0+0 8-bit sRGB 319KB 0.010u 0:00.009
1
задан 10 August 2018 в 09:53
1 ответ

Мне пришлось установить для переменных среды правильные значения, чтобы они работали через shell_exec () . Эти переменные не были установлены в оболочке.

MAGICK_HOME
MAGICK_CONFIGURE_PATH
MAGICK_CODER_MODULE_PATH

В моем случае:

  MAGICK_HOME=/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.7/
  MAGICK_CONFIGURE_PATH=/etc/ImageMagick/
  MAGICK_CODER_MODULE_PATH=/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.7/modules-Q16/coders

Я удостоверился, что мой контейнер всегда будет получать эту конкретную версию магии изображений, чтобы не удивляться в будущем, в моем случае:

RUN apt-get install -y imagemagick=8:6.9.7.4+dfsg-11+deb9u5
1
ответ дан 3 December 2019 в 23:13

Теги

Похожие вопросы