无法使用 M1 在 macOS 上安装十进制 PHP 扩展 – “无法找到 libmpdec”

Mar*_*tin 3 php decimal pecl apple-m1

我尝试decimal使用安装 PHP 扩展,pecl因为现有项目需要它。在我的新 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 7

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

由于这两个线程都没有包含我需要做什么来解决问题的紧凑解释,因此我决定尝试在这里进行总结。

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

sudo mkdir /usr/local/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
Run Code Online (Sandbox Code Playgroud)

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

pecl install decimal
Run Code Online (Sandbox Code Playgroud)

安装现在应该可以按预期进行。

  • 伟大的研究。我通过设置一些变量而没有符号链接:`LIBMPDEC_DIR=/opt/homebrew/lib LIBMPDEC_INC=/opt/homebrew/include pecl installdecimal`(参见https://github.com/php-decimal/ext-decimal/blob) /v1.4.0/config.m4) (2认同)