2

我正在尝试在 Drupal 8 中安装商务模块,但是我收到错误“找不到 BC 数学 PHP 扩展”。

我已经搜索了这个问题并尝试了不同的方法,例如通过添加“bcmath.scale=2”来编辑 PHP.ini,但是我仍然收到错误消息。

任何帮助将不胜感激,谢谢。

4

3 回答 3

7

只需为您的 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 时出现上述问题

于 2018-04-12T07:22:47.967 回答
0

2020 年更新

bcmath如果您使用的是bcmath为 PHP 提供包的发行版,请参阅@GiorgosK 的通过包管理器安装的答案。我会在评论中要求 OP 更新推荐的答案,因为该解决方案可能是大多数人需要的。

三年前,当我回答这个问题时,我建议你必须重建 PHP 才能获得bcmath. 那是不正确的。我使用的是较旧的 Debian/Ubuntu 发行版,它在核心包bcmath中作为静态链接扩展提供。php我当时(错误地)确定这bcmath是一个必须在构建时启用的核心扩展(比如SPLand PCRE)。

对于那些试图解决缺少的bcmath扩展的人(例如那些自己构建/安装 PHP 或仍然遇到问题的人),我已在下面更正并更新了我的原始答案。它详细解释了如何解决缺少的 PHP 扩展。

原始答案(已更正)

错误消息表明 PHP 未在bcmath支持下构建找不到已安装的扩展。PHP 扩展要么直接内置在 PHP 中,要么在运行时从外部动态库文件加载。

由于 PHP 显然没有内置扩展,所以它找不到提供bcmath. POSIX 平台上的这个文件将在 Windows 上bcmath.so被调用。php_bcmath.dll

扩展文件安装extension_dirphp.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 存在符号链接。bcmathconf.diniphp.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 站点正在使用的那个)。

于 2017-06-23T16:16:32.803 回答
0

为 PHP 7.2 添加 BC MATH 扩展

如果您收到此 ( https://prnt.sc/sehmd5 ) 错误,请使用 vagrant ssh 运行以下命令

在 vagrant ssh 的根目录下运行这些命令

  1. sudo add-apt-repository ppa:ondrej/php
  2. sudo apt 更新
  3. sudo apt install php7.2-bcmath
  4. 服务 apache2 重启
  5. 然后打开 php.ini 并搜索 bcmath
  6. 如果 bcmath 比例为 0,则将其更改为 2
  7. 重启php
  8. 重启阿帕奇
  9. 硬重新加载网站
  10. 安装所需模块

同样,对于任何版本的 PHP,您只需要在第三个命令中更改 PHP 版本。

于 2021-03-30T07:14:15.507 回答