Linux
PHP-FPM 和 PHP 執行產生不同的結果
我使用帶有嵌入式
php
伺服器的 docker 容器進行開發。現在我們正在創建一個測試環境,我們想使用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
編輯3:
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.
在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
我必須將環境變數設置為正確的值才能使其正常工作
shell_exec()
。這些變數沒有在 shell 中設置。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