2020 年更新
如果您使用为 PHP 提供 bcmath 包的发行版,请参阅 @GiorgosK 的回答,通过包管理器安装 bcmath。我会要求 cmets 中的 OP 更新推荐的答案,因为该解决方案可能是大多数人需要的。
三年前,当我回答这个问题时,我建议你必须重建 PHP 才能获得bcmath。那是不正确的。我使用的是较旧的 Debian/Ubuntu 发行版,它提供了 bcmath 作为核心 php 包中的静态链接扩展。我当时(错误地)确定bcmath 是必须在构建时启用的核心扩展(如SPL 和PCRE)。
对于那些试图解决缺少的bcmath 扩展程序的人(例如那些自己构建/安装 PHP 或仍然遇到问题的人),我已在下面更正并更新了我的原始答案。它详细解释了如何解决缺少的 PHP 扩展。
原始答案(已更正)
错误消息表明 PHP 不是用bcmath 支持构建的或找不到已安装的扩展。 PHP 扩展要么直接内置在 PHP 中,要么在运行时从外部动态库文件加载。
由于PHP显然没有内置扩展,所以找不到提供bcmath的外部库文件。此文件在 POSIX 平台上将被称为 bcmath.so 和 php_bcmath.dll 在 Windows 上。
扩展文件安装在由php.ini 中的extension_dir 属性指示的目录下。要确定此属性的值,请运行以下命令:
php -r 'echo ini_get("extension_dir").PHP_EOL;'
此属性的默认值是在构建 PHP 时配置的,并且可能因发行版而异。
确认扩展文件已安装在此位置后,您可以检查是否在 php.ini 中启用了扩展。您应该会看到一条启用扩展的行,如下所示:
# POSIX platforms
extension=bcmath.so
# Windows
extension=php_bcmath.dll
对于像 Ubuntu/Debian 这样通过包管理器安装扩展的 Linux 发行版,格式有些不同,因为 Debian 采用分布式配置。通常包管理器会正确安装所有内容,但您可以检查在相应的conf.d 目录下是否存在bcmath 的ini 文件。这些小的ini 文件被sn-ps 导入到更大的php.ini 文件中,它们通常被符号链接到/etc/phpX/mods-available,允许最初为所有PHP SAPI 启用模块,例如CLI、CGI、Apache Mod PHP、ETC .确保您需要使用的 PHP SAPI 存在符号链接。
为确保您的 PHP 正在加载扩展,请在测试页面中运行 phpinfo(); 并搜索 bcmath。您还可以通过 CLI 使用以下命令更轻松地执行此操作:
$ php -i | grep -i bcmath
# Success output: BCMath support => enabled
# (Another command that works well for checking extensions)
$ php -m | grep -i bcmath
# Success output: bcmath
为了让 CLI 显示准确的结果,它必须以相同的 php.ini 文件为目标。如果没有,则使用 -c 选项将 CLI 临时指向正确的 php.ini(即您的 Drupal 站点正在使用的那个)。