tag - PHP | "Falta la extensión de PHP solicitada bcmath en su sistema".
wp site title php (9)
PHP 7.2
Debian - Jessie
apt-get update apt-get install php7.2-bcmath
trabajar como un encanto :)
Saludos compañeros desarrolladores,
Estoy tratando de usar Composer para un proyecto PHP mío en un servidor de desarrollo que inicié recientemente y por alguna razón no puedo. Sin embargo, instalé el compositor correctamente, cuando intento ejecutar el comando require , aparece el siguiente error:
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.
Supongo que es algo que ver con la advertencia de PHP que recibo cuando ejecuto el comando require composer, pero los resultados de búsqueda de Google no me llevan a la dirección correcta.
Además, proporcioné mi archivo /etc/php/7.0/cli/php.ini en caso de un error en ese archivo.
https://gist.github.com/anonymous/bc5bac59d684cbf575cef931ef36daf6 (No pude incluir el archivo en esta publicación debido al límite de caracteres en las publicaciones).
Gracias.
Espero que esto solucione el problema.
sudo apt instalar php-bcmath
Para PHP 7.1, lo siguiente funcionó para mí:
sudo apt install php7.1-bcmath
Para cualquier versión en uso php centos.
Esta solucion funciono para mi
yum instalar php-bcmath
PHP tomará la versión predeterminada instalada en la máquina, buscará ese paquete e instalarlo.
Elimine el archivo composer.lock si ya está creado y vuelva a ejecutar,
instalación del compositor
Si tu corres
actualización del compositor
actualizará los paquetes predeterminados que estén instalados en composer.json, lo que podría crearle problemas.
Para este problema deberíamos usar sudo apt install php-bcmath
Probé el siguiente paquete y funcionó en Php versión 5.6
yum install php56w-bcmath
Puede usar la función get_loaded_extensions para ver si bcmath
está cargado. O en la terminal php -m
o php -m | grep name_of_the_modul
php -m | grep name_of_the_modul
Puedes instalarlo dependiendo del sistema operativo que estés utilizando:
Ubuntu
sudo apt install php7.0-bcmath
CentOS
yum install bcmath
Revisa tu versión de php por tipo: php --version
Verás algo como esto:
PHP 7.2.9-1+ubuntu16.04.1 ....
luego sudo apt install phpX.X-bcmath
donde XX es la versión php, por lo que para este ejemplo, será sudo apt install php7.2-bcmath
después de esto, verifique si el módulo existe o no por tipo php -m | grep bcmath
php -m | grep bcmath
Cosa extraña aquí
Hace un mes instalé todas las versiones de PHP de la misma manera. Aquí están las 4 versiones configuradas de manera idéntica de php: 5.6, 7.0, 7.1, 7.2, con las mismas extensiones (cuando esto fue posible).
Lo extraño fue que bcmath está presente en todas las versiones de PHP, excepto en 7.1.
En la búsqueda de soluciones llego aquí en esta pregunta, donde las cosas de la lógica se confirmaron al instalar bcmath, pero en mi servidor Linode Debian 9 el comando apt install php7.1-bcmath no funciona, con 3 mensajes de error;
- E: Imposible encontrar el paquete php7.1-bcmath
- E: Imposible encontrar algún paquete con glob "php7.1-bcmath"
- E: Imposible encontrar un paquete con la expresión regular "php7.1-bcmath"
Los objetivos no se pueden cumplir con ninguna combinación de consejos y trucos, actualizar el caché de apt, cambiar el servidor reflejado de Debian, instalar yum, etc.
Después de algunas tentativas tuve una iluminación: la modificación de /etc/apt/sources.list habilitando el repositorio predeterminado de Linode, luego, después de una actualización apta (sin solución inmediata), restauré el /etc/apt/sources.list comentando las fuentes de espejo Linode de nuevo. Mágicamente, después de la nueva actualización de apt, el comando ahora está funcionando.
Por esto confirmo: apt install php7.1-bcmath es el comando correcto, pero Debian puede necesitar una patada en el culo