我正在尝试在 Drupal 8 中安装商务模块,但是我收到错误“找不到 BC 数学 PHP 扩展”。
我已经搜索了这个问题并尝试了不同的方法,例如通过添加“bcmath.scale=2”来编辑 PHP.ini,但是我仍然收到错误消息。
任何帮助将不胜感激,谢谢。
我正在尝试在 Drupal 8 中安装商务模块,但是我收到错误“找不到 BC 数学 PHP 扩展”。
我已经搜索了这个问题并尝试了不同的方法,例如通过添加“bcmath.scale=2”来编辑 PHP.ini,但是我仍然收到错误消息。
任何帮助将不胜感激,谢谢。
只需为您的 php 版本安装bcmath插件,无需(重新)构建 php,如已接受答案中所述
# get php version
php -v
# install bcmath based on your version lets assume php 7.1
# for ubuntu
sudo apt install php7.1-bcmath
# for centos
yum install bcmath
# restart apache
sudo systemctl restart apache2
使用 composer 安装 commerce 或 commerce kickstart 时出现上述问题
2020 年更新
bcmath
如果您使用的是bcmath
为 PHP 提供包的发行版,请参阅@GiorgosK 的通过包管理器安装的答案。我会在评论中要求 OP 更新推荐的答案,因为该解决方案可能是大多数人需要的。
三年前,当我回答这个问题时,我建议你必须重建 PHP 才能获得bcmath
. 那是不正确的。我使用的是较旧的 Debian/Ubuntu 发行版,它在核心包bcmath
中作为静态链接扩展提供。php
我当时(错误地)确定这bcmath
是一个必须在构建时启用的核心扩展(比如SPL
and PCRE
)。
对于那些试图解决缺少的bcmath
扩展的人(例如那些自己构建/安装 PHP 或仍然遇到问题的人),我已在下面更正并更新了我的原始答案。它详细解释了如何解决缺少的 PHP 扩展。
原始答案(已更正)
错误消息表明 PHP 未在bcmath
支持下构建或找不到已安装的扩展。PHP 扩展要么直接内置在 PHP 中,要么在运行时从外部动态库文件加载。
由于 PHP 显然没有内置扩展,所以它找不到提供bcmath
. POSIX 平台上的这个文件将在 Windows 上bcmath.so
被调用。php_bcmath.dll
扩展文件安装extension_dir
在php.ini
. 要确定此属性的值,请运行以下命令:
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 采用分布式配置。通常,包管理器会正确安装所有内容,但您可以检查相应目录下是否ini
存在文件。这些小文件是导入到较大文件中的片段,它们通常符号链接到,允许最初为所有 PHP SAPI 启用模块,例如 CLI、CGI、Apache Mod PHP、ETC。确保您需要使用的 PHP SAPI 存在符号链接。bcmath
conf.d
ini
php.ini
/etc/phpX/mods-available
为确保您的 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 站点正在使用的那个)。
为 PHP 7.2 添加 BC MATH 扩展
如果您收到此 ( https://prnt.sc/sehmd5 ) 错误,请使用 vagrant ssh 运行以下命令
在 vagrant ssh 的根目录下运行这些命令
同样,对于任何版本的 PHP,您只需要在第三个命令中更改 PHP 版本。