PHP | "系统中缺少所请求的PHP扩展名bcmath。"

时间:2017-07-12 06:02:51

标签: php web configuration composer-php ini

问候开发者,

我试图在我最近启动的开发服务器上使用composer作为我的PHP项目,由于某种原因我无法做到。我成功安装了composer,但是,当我尝试运行 require 命令时,我收到以下错误:

root@webserver:/var/mypersonal/index# composer require php-amqplib/php-amqplib
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_openssl.dll' - /usr/lib/php/20151012/php_openssl.dll: cannot open shared object file: No such file or directory in Unknown on line 0
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^2.6 for php-amqplib/php-amqplib
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - php-amqplib/php-amqplib v2.6.3 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - php-amqplib/php-amqplib v2.6.2 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - php-amqplib/php-amqplib v2.6.1 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - php-amqplib/php-amqplib v2.6.0 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - Installation request for php-amqplib/php-amqplib ^2.6 -> satisfiable by php-amqplib/php-amqplib[v2.6.0, v2.6.1, v2.6.2, v2.6.3].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php/7.0/cli/php.ini
    - /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
    - /etc/php/7.0/cli/conf.d/10-opcache.ini
    - /etc/php/7.0/cli/conf.d/10-pdo.ini
    - /etc/php/7.0/cli/conf.d/20-calendar.ini
    - /etc/php/7.0/cli/conf.d/20-ctype.ini
    - /etc/php/7.0/cli/conf.d/20-exif.ini
    - /etc/php/7.0/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.0/cli/conf.d/20-ftp.ini
    - /etc/php/7.0/cli/conf.d/20-gettext.ini
    - /etc/php/7.0/cli/conf.d/20-iconv.ini
    - /etc/php/7.0/cli/conf.d/20-json.ini
    - /etc/php/7.0/cli/conf.d/20-mysqli.ini
    - /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini
    - /etc/php/7.0/cli/conf.d/20-phar.ini
    - /etc/php/7.0/cli/conf.d/20-posix.ini
    - /etc/php/7.0/cli/conf.d/20-readline.ini
    - /etc/php/7.0/cli/conf.d/20-shmop.ini
    - /etc/php/7.0/cli/conf.d/20-sockets.ini
    - /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.0/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.0/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.0/cli/conf.d/20-tokenizer.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Installation failed, deleting ./composer.json.

我假设它与我在运行 composer require 命令时收到的PHP警告有关,但没有谷歌搜索结果引导我找到正确的方向。< / p>

此外,我已提供 /etc/php/7.0/cli/php.ini 文件,但该文件中存在错误。

https://gist.github.com/anonymous/bc5bac59d684cbf575cef931ef36daf6 (由于帖子的字符限制,我无法在此帖中包含该文件。)

谢谢。

13 个答案:

答案 0 :(得分:49)

您可以使用函数get_loaded_extensions查看是否已加载bcmath模块。或者在终端php -mphp -m | grep name_of_the_modul

您可以根据您使用的操作系统进行安装:

Ubuntu的

sudo apt install php7.0-bcmath

CentOS的

yum install bcmath

答案 1 :(得分:11)

PHP 7.2

Debian-杰西

apt-get update

apt-get install php7.2-bcmath

像魅力一样工作:)

答案 2 :(得分:9)

对于PHP 7.1,以下内容适用于我:

sudo apt install php7.1-bcmath

答案 3 :(得分:6)

通过以下类型检查您的php版本:php --version

您将看到类似这样的内容:

PHP 7.2.9-1+ubuntu16.04.1 ....

然后是sudo apt install phpX.X-bcmath,其中X.X是php版本,因此对于此^示例,它将是sudo apt install php7.2-bcmath

根据类型php -m | grep bcmath检查模块是否存在

答案 4 :(得分:5)

对于php Centos中的任何版本,请使用

此解决方案适合我

yum install php-bcmath

PHP将采用机器中安装的默认版本,搜索该软件包并进行安装。

删除文件composer.lock文件(如果已经创建,然后再次运行)

作曲家安装

如果你跑

作曲家更新

它将更新composer.json中安装的任何默认软件包,这可能会给您带来麻烦。

答案 5 :(得分:3)

希望这可以解决问题。

  

sudo apt install php-bcmath

答案 6 :(得分:3)

如果您有其他版本的php 7.2,请相应地进行更改

对于CentOS

sudo yum install php72-bcmath

对于Ubuntu

sudo apt install php7.0-bcmath

答案 7 :(得分:2)

如果您使用的是Docker:

    可以通过在容器docker-php-ext-install bcmath 中运行以下命令来安装
  • bcmath

答案 8 :(得分:1)

这很奇怪
一个月前,我以相同的方式安装了所有PHP版本。这里是php的4个配置相同的版本:5.6、7.0、7.1、7.2,具有相同的扩展名(当可能时)。
奇怪的是,所有php版本(不包括7.1)都存在 bcmath
在解决方案搜索中,我到达了这个问题,在这里确认了安装bcmath的逻辑,但是在我的Linode Debian 9服务器中,该命令      易于安装php7.1-bcmath 不起作用,出现3条错误消息;

  • E:不可能找到软件包php7.1-bcmath
  • E:不可能找到glob为“ php7.1-bcmath”的软件包
  • E:不可能找到带有正则表达式“ php7.1-bcmath”的软件包

目标无法通过技巧和窍门,刷新apt缓存,更改Debian的镜像服务器,安装yum等方式来实现...

经过一些尝试,我得到了启发:修改 /etc/apt/sources.list 启用默认的Linode存储库,然后在 apt update (没有立即解决方案),我恢复了/etc/apt/sources.list,再次注释了Linode镜像源。神奇的是,在新的apt更新之后,命令现在可以正常工作了。

通过此操作,我确认: apt install php7.1-bcmath 是正确的命令,但是您的Debian需要踢屁股

答案 9 :(得分:1)

对于此问题,我们应该使用 sudo apt install php-bcmath

答案 10 :(得分:1)

运行此命令,希望它能工作

sudo apt-get install php-bcmath

答案 11 :(得分:1)

在Ubuntu 20.04中

对于php 7.4.3,sudo apt install php7.4-bcmath

答案 12 :(得分:0)

我尝试了下面的包,它在Php 5.6版本中工作

yum install php56w-bcmath