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