it-swarm.com.ru

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

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

Я пытаюсь использовать composer для моего проекта PHP на сервере разработки, который я недавно загрузил, и по какой-то причине я не могу. Я успешно установил composer, однако при попытке выполнить команду 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(Я не смог включить файл в это сообщение из-за ограничения количества символов в сообщениях.)

Спасибо.

23
Coelho

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

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

Ubuntu

Sudo apt install php7.0-bcmath

CentOS

yum install bcmath

47
JTC

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

Sudo apt install php7.1-bcmath
8
eVagabond

PHP 7.2

Debian - Джесси

apt-get update

apt-get install php7.2-bcmath

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

6
chebaby

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

5
Khaled

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

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

ням установить php-bcmath

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

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

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

Если вы бежите

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

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

4
Sayan Biswas

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

Sudo apt install php-bcmath

3
sh6210

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

1
Amir Zandieh

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

yum install php56w-bcmath
0
Palanikumar

Странная вещь здесь
Несколько месяцев назад я установил все 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: Невозможно найти какой-либо пакет с глобусом "php7.1-bcmath"
  • E: Невозможно найти пакет с регулярным выражением "php7.1-bcmath"

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

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

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

0
iodurocarburo