PHP | "Запрошенный PHP-расширение bcmath отсутствует в вашей системе".

Приветствую коллег-разработчиков,

Я пытаюсь использовать композитор для моего проекта PHP на сервере разработки, который я недавно загрузил, и по какой-то причине я не могу. Я успешно установил композитор, однако, когда я пытаюсь запустить команду require, я получаю следующую ошибку:

[email protected]:/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.

Я предполагаю, что это связано с предупреждением PHP, которое я получаю правильно при выполнении команды для компилятора, но результаты поиска в Google не приводят меня в правильном направлении.

Кроме того, я предоставил файл /etc/php/7.0/cli/php.ini ошибки в этом файле.

https://gist.github.com/anonymous/bc5bac59d684cbf575cef931ef36daf6 (я не мог включить файл в этот пост из-за ограничения на количество символов в сообщениях).

Спасибо.

Ответ 1

Вы можете использовать функцию get_loaded_extensions, чтобы узнать, bcmath ли bcmath. Или в терминале php -m или php -m | grep name_of_the_modul php -m | grep name_of_the_modul

Вы можете установить его в зависимости от того, какую ОС вы используете:

Ubuntu

sudo apt install php7.0-bcmath

CentOS

yum install bcmath

Ответ 2

Для PHP 7.1 для меня работало следующее:

sudo apt install php7.1-bcmath

Ответ 3

Для любой версии в php Centos используйте

Это решение работало для меня

yum install php-bcmath

PHP будет использовать версию по умолчанию, установленную на компьютере, выполнить поиск этого пакета и установить его.

Удалите файл composer.lock файла, если он уже создан, а затем снова запустите,

установка композитора

Если вы запустите

обновление композитора

он обновит все установленные по умолчанию пакеты в composer.json, которые могут создать проблему для вас.

Ответ 4

проверьте свою версию 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

Ответ 5

надеюсь, что это исправит проблему.

sudo apt install php-bcmath

Ответ 6

Я попробовал ниже пакет, и он работал в Php версии 5.6

yum install php56w-bcmath

Ответ 7

Странная вещь здесь
Несколько месяцев назад я установил всю версию PHP таким же образом. Здесь 4 идентично настроенная версия php: 5.6, 7.0, 7.1, 7.2 с теми же расширениями (когда это стало возможным).
Странная вещь заключалась в том, что bcmath присутствует для всех версий php, за исключением 7.1.
В поиске решения я прихожу сюда в этом вопросе, где логические вещи были подтверждены установкой bcmath, но на моем сервере Linode Debian 9 команда apt install php7.1-bcmath не работает, с 3 сообщениями об ошибках;

  • E: Невозможно найти пакет php7.1-bcmath
  • E: Невозможно найти какой-то пакет с glob "php7.1-bcmath"
  • E: Невозможно найти пакет с регулярным выражением "php7.1-bcmath"

Цели не встречаются с какой-либо комбинацией советов и трюков, обновляя кеш-кеш, меняют зеркальный сервер Debian, устанавливают yum и так далее...

После некоторых пробных событий у меня было освещение: изменение /etc/apt/sources.list, включив репозиторий Linode по умолчанию, а затем после апплетного обновления (без немедленного решения) я восстановил /etc/apt/sources.list снова закомментируйте источники зеркального отображения. Волшебно, после нового apt update команда теперь работает.

Под этим я подтверждаю: apt install php7.1-bcmath - это правильная команда, но вашему Debian может понадобиться удар в задницу

Ответ 8

PHP 7.2

Debian - jessie

apt-get update

apt-get install php7.2-bcmath

работа как шарм :)

Ответ 9

Для этой проблемы мы должны использовать sudo apt install php-bcmath

Ответ 10

Измените свою версию php на php 7.0