繁体   English   中英

PHP | “您的系统缺少请求的 PHP 扩展名 bcmath。”

[英]PHP | "The requested PHP extension bcmath is missing from your system."

问候开发人员,

我正在尝试在我最近启动的开发服务器上为我的 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 警告有关,但没有谷歌搜索结果将我引向正确的方向。

此外,我还提供了我的/etc/php/7.0/cli/php.ini文件以防该文件中出现错误。

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

谢谢你。

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

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

Ubuntu

sudo apt install php7.0-bcmath

CentOS

yum install bcmath

PHP 7.2

Debian - 杰西

apt-get update apt-get install php7.2-bcmath

像魅力一样工作:)

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

这个解决方案对我有用

yum 安装 php-bcmath

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

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

作曲家安装

如果你跑

作曲家更新

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

对于 PHP 7.1,以下对我有用:

sudo apt install php7.1-bcmath

按类型检查您的 php 版本: php --version

你会看到这样的事情:

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

然后sudo apt install phpX.X-bcmath其中 XX 是 php 版本,所以对于这个 ^ 示例,它将是sudo apt install php7.2-bcmath

在此检查模块是否存在之后,输入php -m | grep bcmath php -m | grep bcmath

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

对于CentOS

sudo yum install php72-bcmath

对于Ubuntu

sudo apt install php7.0-bcmath

在 Ubuntu 20.04 中

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

运行这个命令,希望它会起作用

sudo apt-get install php-bcmath

希望这能解决问题。

sudo apt 安装 php-bcmath

如果您使用的是 Docker:

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

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

奇怪的事情在这里
几个月前,我以相同的方式安装了所有 PHP 版本。 这里有 4 个相同配置的 php 版本:5.6、7.0、7.1、7.2,具有相同的扩展(当这成为可能时)。
奇怪的是,除了 7.1 之外的所有 php 版本都存在bcmath
在解决方案搜索中,我到达了这个问题,其中逻辑的事情被确认安装 bcmath,但在我的 Linode Debian 9 服务器中,命令apt install 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 更新后(立即没有解决方案),我恢复了 /etc/apt/sources.list再次注释掉 Linode 镜像源。 神奇的是,在新的 apt 更新之后,命令现在正在运行。

通过这一点我确认: apt install php7.1-bcmath是正确的命令,但你的 Debian 可能需要一个踢屁股

使用此命令安装,这对我有用

apt-get install php-bcmath

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

yum install php56w-bcmath

sudo apt 安装 php7.3-bcmath

对于那些已经尝试安装 bc-math 但 composer 仍然出错的人。

试试这个命令

rm composer.lock

它一定会起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM