web-dev-qa-db-ja.com

PHP | 「要求されたPHP拡張bcmathがシステムにありません。」

開発者仲間の皆さん、

私が最近起動した開発サーバー上の私の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警告と関係があると想定していますが、Google検索結果が正しい方向に導きません。

さらに、そのファイルでエラーが発生した場合に備えて、/ etc/php/7.0/cli/php.iniファイルを提供しました。

https://Gist.github.com/anonymous/bc5bac59d684cbf575cef931ef36daf6(この投稿にファイルを含めることができませんでした投稿の文字数制限)

ありがとうございました。

30
Coelho

関数 get_loaded_extensions を使用して、bcmathモジュールがロードされているかどうかを確認できます。または、ターミナルphp -mまたはphp -m | grep name_of_the_modul

使用しているOSに応じてインストールできます。

Ubuntu

Sudo apt install php7.0-bcmath

CentOS

yum install bcmath

51
JTC

PHP 7.2

Debian-ジェシー

apt-get update

apt-get install php7.2-bcmath

魅力のように働く:)

14
chebaby

PHP 7.1の場合、次のことがうまくいきました。

Sudo apt install php7.1-bcmath
9
eVagabond

PHP Centosのどのバージョンでも使用

このソリューションは私のために働いた

yum install php-bcmath

PHPは、マシンにインストールされているデフォルトバージョンを使用し、そのパッケージを検索してインストールします。

ファイルcomposer.lockが既に作成されている場合は削除し、再度実行します。

作曲家のインストール

走ったら

作曲家の更新

composer.jsonにインストールされているデフォルトパッケージが更新されるため、問題が発生する可能性があります。

7
Sayan Biswas

タイプ別に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によるモジュールが存在するかどうか

7
Khaled Alam

php 7.2他のバージョンがある場合は、それに応じて変更してください

CentOSの場合

Sudo yum install php72-bcmath

Ubuntuの場合

Sudo apt install php7.0-bcmath
4
Hamza Zymawy

これで問題が解決することを願っています。

Sudo apt install php-bcmath

3
sh6210

ここで奇妙なこと
数か月前、すべてのPHPバージョンを同じ方法でインストールしました。ここには、同じように構成された4つのphpバージョン5.6、7.0、7.1、7.2があり、同じ拡張子が付いています(これが可能になったとき)。
奇妙なことは、bcmathが7.1を除くすべてのphpバージョンに存在することです。
ソリューション検索では、bcmathのインストールでロジックの事柄が確認されたこの質問にここに到着しましたが、私のLinode Debian 9サーバーではコマンドapt install php7 .1-bcmathは機能せず、3つのエラーメッセージが表示されます。

  • E:パッケージphp7.1-bcmathが見つかりません
  • E:グロブ "php7.1-bcmath"を含むパッケージを見つけることができません
  • E:正規表現「php7.1-bcmath」を持つパッケージを見つけることができません

目標は、ヒントとトリックの組み合わせ、aptキャッシュの更新、Debianのミラーサーバーの変更、yumのインストールなどとは一致しません...

いくつかの暫定案の後、照明がありました:/ etc/apt/sources.listの修正apt update(すぐに解決策はありません)の後、/ etc/apt/sources.listを復元しましたLinodeミラーソースを再びコメントアウトします。魔法のように、新しいapt更新後、コマンドは現在機能しています。

これにより、私は確認します:apt install php7.1-bcmathは正しいコマンドですが、Debianを起動する必要がある場合がありますお尻

1
iodurocarburo

この問題にはSudo apt install php-bcmathを使用する必要があります

1
Amir Zandieh

私はパッケージを試してみましたが、Phpバージョン5.6で動作しました

yum install php56w-bcmath
0
Palanikumar