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.
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
Pour PHP 7.1, les éléments suivants ont fonctionné pour moi:
Sudo apt install php7.1-bcmath
apt-get update apt-get install php7.2-bcmath
travailler comme un charme :)
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
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.
espérons que cela résoudra le problème.
Sudo apt install php-bcmath
Pour ce problème, nous devrions utiliser Sudo apt install php-bcmath
J'ai essayé le paquet ci-dessous et cela a fonctionné dans Php version 5.6
yum install php56w-bcmath
_ {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;
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