Imagick PHP 扩展如何定位 ImageMagick 库?

问题描述 投票:0回答:1

来自 文档:“PHP 扩展 Imagick 通过调用 ImageMagick 库来工作”。

我不清楚如何它调用ImageMagick库。它搜索哪些路径,这些路径在哪里配置,以及它实际需要安装 ImageMagick 的哪些部分?

我正在尝试创建一个独立的、可移植的 PHP 安装(在 macOS 上)。我可以与许多其他扩展一起正常工作,例如 xdebug、ssh2、redis 等,但无法让 imagick 工作。我编译并安装它没有问题,但是当我将 PHP 安装移动到干净的机器时,

phpinfo()
列出了
ImageMagick number of supported formats 0

php imagemagick imagick
1个回答
0
投票

配置 ImageMagick 所在位置的所有工作都是在编译 Imagick 扩展时的“配置”步骤中完成的。

如果您自己编译 Imagick,则可以对此进行一些控制,因为您可以使用

--with-imagick
参数传递查找 ImageMagick 头文件和 C 文件的位置,例如

./configure --with-imagick=/usr/im6

否则编译器将尝试使用该程序来查找 ImageMagick

pkg-config

如果您通过包管理器安装 Imagick,则 Imagick 查找 ImageMagick 文件的位置超出了您的控制范围,因为这是由管理该包管理器的人完成的。

顺便说一句,可以使用 PHP 将 Imagick 和 ImageMagick 库静态编译为代码,但是这可能不会像您希望的那样工作,因为 ImageMagick 本身往往会在计算机上安装相当多的文件,其中一些文件是可编辑的控制 ImageMagick 的工作方式。

对于我使用的 docker 容器,我必须复制以下文件。

/usr/local/lib/ImageMagick-6.9.12/config-Q16/configure.xml 

/usr/local/lib/libMagickCore-6.Q16.a 
/usr/local/lib/libMagickCore-6.Q16.la 
/usr/local/lib/libMagickCore-6.Q16.so 
/usr/local/lib/libMagickCore-6.Q16.so.7 
/usr/local/lib/libMagickCore-6.Q16.so.7.0.0 
/usr/local/lib/libMagickWand-6.Q16.a
/usr/local/lib/libMagickWand-6.Q16.la
/usr/local/lib/libMagickWand-6.Q16.so
/usr/local/lib/libMagickWand-6.Q16.so.7
/usr/local/lib/libMagickWand-6.Q16.so.7.0.0

/usr/local/lib/pkgconfig/ImageMagick-6.Q16.pc
/usr/local/lib/pkgconfig/ImageMagick.pc
/usr/local/lib/pkgconfig/MagickCore-6.Q16.pc
/usr/local/lib/pkgconfig/MagickCore.pc
/usr/local/lib/pkgconfig/MagickWand-6.Q16.pc
/usr/local/lib/pkgconfig/MagickWand.pc
/usr/local/lib/pkgconfig/Wand-6.Q16.pc
/usr/local/lib/pkgconfig/Wand.pc

/usr/lib/x86_64-linux-gnu/libfftw3.so.3
/usr/lib/x86_64-linux-gnu/libfreetype.so.6
/usr/lib/x86_64-linux-gnu/libjbig.so.0
/usr/lib/x86_64-linux-gnu/libjpeg.so.62
/usr/lib/x86_64-linux-gnu/libpng16.so.16
/usr/lib/x86_64-linux-gnu/libtiff.so.5
/usr/lib/x86_64-linux-gnu/libwebpmux.so.3
/usr/lib/x86_64-linux-gnu/libwebpdemux.so.2
/usr/lib/x86_64-linux-gnu/libwebp.so.6
/usr/lib/x86_64-linux-gnu/libzstd.so.1

/usr/local/etc/ImageMagick-6/coder.xml
/usr/local/etc/ImageMagick-6/colors.xml
/usr/local/etc/ImageMagick-6/delegates.xml
/usr/local/etc/ImageMagick-6/log.xml
/usr/local/etc/ImageMagick-6/magic.xml
/usr/local/etc/ImageMagick-6/mime.xml
/usr/local/etc/ImageMagick-6/policy.xml
/usr/local/etc/ImageMagick-6/quantization-table.xml
/usr/local/etc/ImageMagick-6/thresholds.xml
/usr/local/etc/ImageMagick-6/type-apple.xml
/usr/local/etc/ImageMagick-6/type-dejavu.xml
/usr/local/etc/ImageMagick-6/type-ghostscript.xml
/usr/local/etc/ImageMagick-6/type-urw-base35.xml
/usr/local/etc/ImageMagick-6/type-windows.xml
/usr/local/etc/ImageMagick-6/type.xml

该列表是使用“strace”工具找到的,并查看 ImageMagick 在出错时未能找到哪些文件。

还有一些其他项目试图使制作可安装的 PHP 程序成为可能。在这种事情上与他们合作可能是值得的。

© www.soinside.com 2019 - 2024. All rights reserved.