PHP 8 NTS/Windows: No se puede cargar la biblioteca dinámica ‘http’ pero los archivos de extensión seguramente están presentes
Estoy ejecutando composer update
en un proyecto que requiere ext-http
en el archivo composer.json
y obtengo este error.
Advertencia de PHP: inicio de PHP: no se pudo cargar la biblioteca dinámica 'http' (intenté:
ext\http (No fue posible encontrar el módulo especificado),
ext\php_http.dll (No fue posible encontrar el módulo especificado)
) en Unknown en la línea 0
Sin embargo, estoy positivamente seguro de que he descargado la extensión desde https://windows.php.net/downloads/pecl/releases/pecl_http/4.2.1/php_pecl_http-4.2.1-8.0-nts-vs16-x64.zip y he guardado los archivos php_http.dll
y php_http.pdb
en mi carpeta PHP\ext
, donde se encuentran todas las demás extensiones.
Mi versión de PHP es:
PHP 8.0.7 (cli) (built: Jun 14 2021 19:43:23) (NTS Visual C++ 2019 x64)
Derechos de autor (c) The PHP Group
Zend Engine v4.0.7, Derechos de autor (c) Zend Technologies
con Zend OPcache v8.0.7, Derechos de autor (c), por Zend Technologies
con Xdebug v3.0.4, Derechos de autor (c) 2002-2021, por Derick Rethans
Dentro de mi archivo PHP.ini, ya está entre las extensiones cargadas:
extension=amqp
extension=bz2
extension=curl
extension=ffi
extension=ftp
extension=fileinfo
extension=gd
;extension=gettext
;extension=gmp
extension=http ; <=== aquí
extension=intl
;extension=imap
;extension=ldap
extension=mbstring
;extension=exif
;extension=mysqli
;extension=oci8_12c
;extension=oci8_19
;extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop
;extension=snmp
extension=soap
extension=sockets
extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xsl
zend_extension=opcache
¿Cuál es el problema que no estoy viendo?
davy.ai
Según el mensaje de error, parece que la extensión
http
no se está cargando correctamente en PHP. A pesar de que has descargado la extensión y la has agregado a tu carpetaPHP\ext
, parece que PHP sigue sin poder encontrarla.Aquí hay algunas soluciones posibles que puedes intentar:
php.ini
:Aunque ya has confirmado que la extensión
http
está incluida en tu archivophp.ini
, es posible que haya múltiples archivosphp.ini
en tu sistema y se esté utilizando el incorrecto. Para verificar que se esté utilizando el archivophp.ini
correcto, puedes utilizar el comandophp --ini
para ver qué archivo de configuración está utilizando PHP.Verifica que los archivos de extensión tengan los nombres correctos:
Asegúrate de que los archivos de extensión en tu carpeta
PHP\ext
tengan los nombres correctos. El mensaje de error sugiere que PHP está buscandophp_http.dll
, pero es posible que el archivo tenga un nombre diferente o una extensión diferente (por ejemplo,.so
en sistemas Linux). Verifica el nombre del archivo y la extensión para asegurarte de que coincidan con lo que PHP espera.Verifica si la versión de la extensión es compatible con PHP:
Asegúrate de que la versión de la extensión
http
que has descargado sea compatible con tu versión de PHP. En este caso, dado que estás utilizando PHP 8.0.7, debes asegurarte de haber descargado la versión de la extensión específicamente construida para PHP 8.0.7.Reinicia tu servidor web o PHP-FPM:
A veces, los cambios en el archivo
php.ini
o las extensiones recién instaladas pueden no surtir efecto hasta que reinicies tu servidor web o PHP-FPM. Intenta reiniciar tu servidor web o PHP-FPM y verifica si eso resuelve el problema.Si ninguna de estas soluciones funciona, podrías intentar lo siguiente:
Podrías intentar cargar manualmente la extensión
http
utilizando la funcióndl()
en tu código PHP. Por ejemplo:Ten en cuenta que utilizar
dl()
generalmente no se recomienda, y es posible que no funcione dependiendo de tu configuración de PHP.Reinstala la extensión:
Si todo lo demás falla, podrías intentar reinstalar la extensión
http
desde cero. Asegúrate de seguir cuidadosamente las instrucciones de instalación y verifica que tengas la versión correcta para tu versión de PHP.