PHP PHP 8 的扩展 imagick 3.5.0:在 macOS 上安装失败

PHP extension imagick 3.5.0 for PHP 8 : installation on macos fails

当我尝试运行以下命令时

pecl install imagick

然后安装结束:

imagemagick/7.0.11-9/lib -L/usr/local/Cellar/imagemagick/7.0.11-9/lib -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI
cc ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/imagick.so -bundle  .libs/imagick_file.o .libs/imagick_class.o .libs/imagickdraw_class.o .libs/imagickpixel_class.o .libs/imagickpixeliterator_class.o .libs/imagick_helpers.o .libs/imagick.o .libs/imagickkernel_class.o .libs/shim_im6_to_im7.o  -lgomp -L/usr/local/Cellar/imagemagick/7.0.11-9/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickWand-7.Q16HDRI.dylib -L/usr/local/Cellar/little-cms2/2.12/lib -L/usr/local/opt/freetype/lib -L/usr/local/Cellar/glib/2.68.1/lib -L/usr/local/opt/gettext/lib /usr/local/Cellar/imagemagick/7.0.11-9/lib/libMagickCore-7.Q16HDRI.dylib  -Wl,-rpath -Wl,/usr/local/Cellar/imagemagick/7.0.11-9/lib
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [imagick.la] Error 1
ERROR: `make' failed

原因好像是上一版imagick(3.5.0)的编译有改动,需要这个库。无法安装较低版本,因为它们与 PHP 8.0.

不兼容

知道如何在 macOS 上消除这个错误吗?

2021 年 7 月 22 日更新

截至 2021 年 7 月 22 日,版本 3.5.1 在 pecl 频道中稳定,可用于为 PHP 7 和 PHP 8 编译 imagick。

pecl install imagick

通用命令不会再失败

旧答案

3.5 版目前无法在 MAC 上编译,因为 missing/broken 支持 MAC gcc 编译器的 gomp

最好的解决方法是安装 3.4.4 版

pecl install imagick-3.4.4

更多信息here

通过手动安装扩展程序可以解决此问题。唯一的问题是安装完成后它不会出现在 pecl 安装的扩展中,并且无法从 pecl 中卸载。尽管如此,我还是提供了我在这里找到的答案:

运行以下命令

cd path/to/installation/is/going/to/be/made
pecl bundle imagick
cd imagick
mv config.m4 config.m4.bak
wget https://raw.githubusercontent.com/yyongpil/imagick/2a2b924b9d25c8ef4a677b72e6868fbc7c9e01cc/config.m4

命令行解释前面的流程命令行:

  1. 将自己置于要进行安装的文件夹中
  2. 下载并展开源文件
  3. 进入源文件夹
  4. 为了安全起见备份原始config.m4文件
  5. 下载修改后的 config.m4 文件以修复 gomp 问题,如 here
  6. 所述

最后简单地继续手动安装过程

phpize
./configuration
make
sudo make install

在此之后,您应该可以使用 PHP 的最新 imagick 扩展。对于 PHP 8.0imagick 3.5.0so 文件位于 /usr/local/lib/php/pecl/20200930/imagick.so

新版本已被标记并包含修复的构建配置!您可以使用此命令安装它:

pecl install imagick-3.5.1

(没有它现在应该工作的版本)