无法在带有 M1 的 macOS 上安装 decimal PHP 扩展 – "Could not find libmpdec"

Cannot install decimal PHP extension on macOS with M1 – "Could not find libmpdec"

我尝试使用 pecl 安装 decimal PHP 扩展,因为现有项目需要它。在我的新 M1 机器上,出现以下错误:

$ pecl install decimal
[...]
checking for libmpdec library in default path... Could not find libmpdec
configure: error: Please reinstall libmpdec
ERROR: `/private/tmp/pear/temp/decimal/configure --with-php-config=/opt/homebrew/bin/php-config' failed

在线研究后,我发现这些线程描述了类似的问题:

由于这两个线程都没有对我需要做些什么来解决这个问题进行简洁的解释,我决定在这里尝试总结一下。

pecl 尝试安装 decimal 扩展时,在默认库路径中找不到 libmpdec 库。安装程序尝试在 /usr/local/lib/ 中找到库,而 Homebrew 在 /opt/homebrew/lib/ 中安装它。为了帮助安装程序加快速度,为库组件和两个头文件创建符号链接:

sudo ln -s /opt/homebrew/lib/libmpdec++.2.5.1.dylib /usr/local/lib/libmpdec++.2.5.1.dylib
sudo ln -s /opt/homebrew/lib/libmpdec++.3.dylib /usr/local/lib/libmpdec++.3.dylib
sudo ln -s /opt/homebrew/lib/libmpdec++.a /usr/local/lib/libmpdec++.a
sudo ln -s /opt/homebrew/lib/libmpdec++.dylib /usr/local/lib/libmpdec++.dylib
sudo ln -s /opt/homebrew/lib/libmpdec.2.5.1.dylib /usr/local/lib/libmpdec.2.5.1.dylib
sudo ln -s /opt/homebrew/lib/libmpdec.3.dylib /usr/local/lib/libmpdec.3.dylib
sudo ln -s /opt/homebrew/lib/libmpdec.a /usr/local/lib/libmpdec.a
sudo ln -s /opt/homebrew/lib/libmpdec.dylib /usr/local/lib/libmpdec.dylib

sudo ln -s /opt/homebrew/include/decimal.hh /usr/local/include/decimal.hh
sudo ln -s /opt/homebrew/include/mpdecimal.h /usr/local/include/mpdecimal.h

创建符号链接后,再次尝试安装 decimal 扩展:

pecl install decimal

安装现在应该按预期工作。