web-dev-qa-db-fra.com

PHP | "La demande PHP l'extension bcmath est absente de votre système. "

Salutations les développeurs,

J'essaie d'utiliser composer pour un de mes projets PHP sur un serveur de développement que j'ai récemment démarré et pour une raison quelconque, je ne le peux pas. J'ai correctement installé composer, cependant, lorsque j'essaie d'exécuter la commande require, le message d'erreur suivant s'affiche:

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.

Je suppose que cela a quelque chose à voir avec l'avertissement PHP que je reçois bien lors de l'exécution de la commande composer require, mais aucun résultat de recherche Google ne me conduit dans la bonne direction.

De plus, j'ai fourni mon fichier /etc/php/7.0/cli/php.ini en cas d'erreur dans ce fichier.

https://Gist.github.com/anonymous/bc5bac59d684cbf575cef931ef36daf6(je n'ai pas pu inclure le fichier dans cet article en raison du nombre de caractères limité dans les articles.)}

Je vous remercie.

23
Coelho

Vous pouvez utiliser la fonction get_loaded_extensions pour voir si le module bcmath est chargé. Ou au terminal php -m ou php -m | grep name_of_the_modul

Vous pouvez l'installer en fonction du système d'exploitation que vous utilisez:

Ubuntu

Sudo apt install php7.0-bcmath

CentOS

yum install bcmath

47
JTC

Pour PHP 7.1, les éléments suivants ont fonctionné pour moi:

Sudo apt install php7.1-bcmath
8
eVagabond

PHP 7.2

Debian - Jessie

apt-get update

apt-get install php7.2-bcmath

travailler comme un charme :)

6
chebaby

vérifiez votre version php par type: php --version

vous verrez quelque chose comme ceci:

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

alors Sudo apt install phpX.X-bcmath où X.X est la version php, donc pour cet exemple ^ ce sera Sudo apt install php7.2-bcmath

après cette vérification, si le module existait ou non, par type php -m | grep bcmath

5
Khaled

Pour toute version en php, utilisez Centos

Cette solution a fonctionné pour moi

yum install php-bcmath

PHP utilisera la version par défaut installée sur la machine, recherchera ce paquet et l'installera.

Supprimez le fichier composer.lock si celui-ci est déjà créé, puis exécutez-le à nouveau.

compositeur installer

Si vous courez

mise à jour du compositeur

il mettra à jour tous les packages par défaut installés dans composer.json, ce qui pourrait créer un problème pour vous.

4
Sayan Biswas

espérons que cela résoudra le problème.

Sudo apt install php-bcmath

3
sh6210

Pour ce problème, nous devrions utiliser Sudo apt install php-bcmath

1
Amir Zandieh

J'ai essayé le paquet ci-dessous et cela a fonctionné dans Php version 5.6

yum install php56w-bcmath
0
Palanikumar

_ {Chose étrange ici} _
Il y a quelques mois, j'ai installé toutes les versions de PHP de la même manière. Voici 4 versions de php configurées de manière identique: 5.6, 7.0, 7.1, 7.2, avec les mêmes extensions (lorsque cela a été rendu possible).
La chose étrange était que bcmath est présent pour toutes les versions de PHP, à l'exception de 7.1.
Dans la recherche de solution, j'arrive ici dans cette question, où la logique a été confirmée lors de l'installation de bcmath, mais dans mon serveur Linode Debian 9, la commande apt install php7.1-bcmath ne fonctionne pas, avec 3 messages d'erreur;

  • E: Impossible de trouver le paquet php7.1-bcmath
  • E: Impossible de trouver un paquet avec glob "php7.1-bcmath"
  • E: Impossible de trouver un paquet avec l'expression régulière "php7.1-bcmath"

Les objectifs ne rencontrent aucune combinaison d'astuces et d'astuces, actualiser le cache d'apt, changer le serveur en miroir de Debian, installer yum, etc.

Après quelques tentatives, j’ai eu une illumination: modifier /etc/apt/sources.list pour activer le référentiel Linode par défaut, puis après une apt update sans solution immédiate, j’ai restauré le fichier /etc/apt/sources.list qui commente à nouveau les sources miroir de Linode. Comme par magie, après la nouvelle mise à jour, la commande fonctionne maintenant.

Par ceci je confirme: install install php7.1-bcmath est la bonne commande, mais votre Debian peut avoir besoin d’un coup de pied dans le cul

0
iodurocarburo