php 7.4 安装 Imagick 查找未定义宏失败

php 7.4 install Imagick fails looking for undefined macro

我正在尝试在我的 Debian 10 服务器上安装 Imagick 运行 php 7.4,但我收到一个奇怪的宏相关错误,我不明白那是什么意思。

pecl 已安装

这里是sudo pecl install imagick

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading imagick-3.4.4.tgz ...
Starting to download imagick-3.4.4.tgz (253,434 bytes)
.....................................................done: 253,434 bytes
19 source files, building
running: phpize
Configuring for:
PHP Api Version:         20190902
Zend Module Api No:      20190902
Zend Extension Api No:   320190902
configure.ac:161: warning: LTOPTIONS_VERSION is m4_require'd but not m4_defun'd
build/libtool.m4:61: LT_INIT is expanded from...
build/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
configure.ac:161: the top level
configure.ac:161: warning: LTSUGAR_VERSION is m4_require'd but not m4_defun'd
build/libtool.m4:61: LT_INIT is expanded from...
build/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
configure.ac:161: the top level
configure.ac:161: warning: LTVERSION_VERSION is m4_require'd but not m4_defun'd
build/libtool.m4:61: LT_INIT is expanded from...
build/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
configure.ac:161: the top level
configure.ac:161: warning: LTOBSOLETE_VERSION is m4_require'd but not m4_defun'd
build/libtool.m4:61: LT_INIT is expanded from...
build/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
configure.ac:161: the top level
configure:4702: error: possibly undefined macro: m4_ifval
  If this token and others are legitimate, please use m4_pattern_allow.
  See the Autoconf documentation.
configure:8297: error: possibly undefined macro: _LT_SET_OPTIONS
configure:8297: error: possibly undefined macro: LT_INIT
ERROR: `phpize' failed

今天我突然在 Ubuntu 上遇到了同样的问题。 这曾经在一段时间前工作过。

但是对于 imagick 你不需要再使用 PECL,你可以只使用:

sudo apt install php-imagick

PHP imagick 应该为 Debian 打包:https://packages.debian.org/buster/php-imagick

我相信有人发布了 php7.4-dev 的错误版本,导致 phpize 无法配置。

我碰巧有最新的工作版本 docker 图像和 php7.4-dev 并与安装的最新 php7.4-dev 进行比较。发现 /usr/bin/phpize 有以下差异。

作为临时解决方案,我认为如果您注释掉 /usr/bin/phpize 中的 (cd "$aclocaldir" && cp $LIBTOOL_FILES "$builddir"/build) 行,并将 FIELDS_BUILD 更改为 FILES_BUILD="php.m4 shtool libtool.m4 ax_check_compile_flag.m4 ax_gcc_func_attribute.m4 php_cxx_compile_stdcxx.m4 pkg.m4 config.guess config.sub ltmain.sh Makefile.global" 它应该可以工作。

root@9dff9e6bd67b:/usr/bin# diff phpize-bad phpize-good
12c12,13
< FILES_BUILD="php.m4 shtool libtool.m4 ax_check_compile_flag.m4 ax_gcc_func_attribute.m4 php_cxx_compile_stdcxx.m4 pkg.m4 config.guess config.sub ltmain.sh Makefile.global"
---
> aclocaldir="$prefix/share/aclocal"
> FILES_BUILD="php.m4 shtool ax_check_compile_flag.m4 ax_gcc_func_attribute.m4 php_cxx_compile_stdcxx.m4 config.guess config.sub ltmain.sh Makefile.global"
13a15
> LIBTOOL_FILES="pkg.m4 libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4 glib-gettext.m4"
147a150
>   (cd "$aclocaldir" && cp $LIBTOOL_FILES "$builddir"/build)

更新:

我相信最新的软件包已经解决了这个问题,请apt-get更新并apt-get重新安装php7.4-dev来解决这个问题。