【发布时间】:2018-10-14 23:25:45
【问题描述】:
在我的 Ubuntu 18.04.1 LTS 服务器上,我设置了 ImageMagick、Apache2、Php 7.2 和 Php iMagick 3.4.3。
在终端上,convert -version 输出:
Version: ImageMagick 7.0.8-12 Q16 x86_64 2018-10-14 https://imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib heic jbig jng jp2 jpeg lcms lqr lzma openexr pangocairo png ps raw rsvg tiff webp wmf x xml zlib
在终端上,convert pic.x3f pic.jpg 完美运行,没有错误,文件已创建。
但是在 php-imagick 和 apache2 服务器上,$img = new Imagick('temp-upload-path');for 相同的 'pic.x3f' 文件返回
Fatal error: Uncaught ImagickException: no decode delegate for this image format `XEF' @ error/constitute.c/ReadImage/556 in /var/www/html/Upload.php:45 Stack trace: #0 /var/www/html/Upload.php(45): Imagick->__construct('/tmp/phpvFoXK3') #1 {main} thrown in /var/www/html/Upload.php on line 45
MDC 和 RAW 格式的文件也是如此,(可以在 ImageMagick 中读取,但在 Php 的 iMagick 上返回错误)。
另外, 格式:DCR NRW ARW RW2 SR2 SRF KDC 都在 ImageMagick 中成功读取,但在 Php 的 Imagick 中尝试读取和转换它们时,返回:
Fatal error: Uncaught ImagickException: TIFF directory is missing required "ImageLength" field. `MissingRequired' @ error/tiff.c/TIFFErrors/650 in /var/www/html/Upload.php:45 Stack trace: #0 /var/www/html/Upload.php(45): Imagick->__construct('/tmp/phpf9Rylo') #1 {main} thrown in /var/www/html/Upload.php on line 45
似乎无法通过 PHP-iMagick 读取它们,PHP-iMagick 应该链接到成功读取它们的系统 ImageMagick。我还没有发现其他格式的问题,jpg、png、tiff、webp 等都可以正常阅读。 RAW 格式会发生这种情况。
感谢任何帮助
【问题讨论】:
-
这是 Ghostscript 的常见问题。 PHP 不使用与您的操作系统相同的 ENV 变量。要解决此问题,请在 PS 条目的 delegates.xml 文件中添加 gs (Ghostscript) 的完整路径。在显示
command=""gs"的位置,将其更改为command=""full_path_to/gs"。添加您的实际 full_path_to/gs。
标签: php imagemagick apache2 imagick ubuntu-18.04