A execução do PHP-FPM e PHP produz resultados diferentes

1

Eu usei um contêiner docker com o servidor php incorporado para desenvolvimento. Agora estamos criando um ambiente de teste e queremos usar php-fpm . Tudo correu bem e tudo funciona como esperado, com uma diferença - ImageMagick.

O mesmo comando, executado em php embedded server e php-fpm , produz resultados diferentes:

Ao converter imagens usando o servidor incorporado, ele funciona muito bem, mas ao usar php-fpm , recebo:

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

É realmente frustrante porque é o mesmo container, a mesma instalação de php , o mesmo php.ini.

EDITAR: Comando usado:

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

EDIT2: Eu tentei executar algo "simples", e aqui está a saída:

‌‌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.

enquanto executado diretamente no shell:

/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
    
por Krystian 09.08.2018 / 16:17

1 resposta

1

Eu tive que definir as variáveis de ambiente para corrigir os valores para que funcionasse com shell_exec() . Essas variáveis não foram definidas no shell.

MAGICK_HOME
MAGICK_CONFIGURE_PATH
MAGICK_CODER_MODULE_PATH

No meu caso:

  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

Certifiquei-me de que meu contêiner sempre obteria essa versão específica da mágica de imagens para não ser surpreendido no futuro, no meu caso:

RUN apt-get install -y imagemagick=8:6.9.7.4+dfsg-11+deb9u5
    
por 10.08.2018 / 09:37