es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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 carpeta PHP\ext, parece que PHP sigue sin poder encontrarla.

    Aquí hay algunas soluciones posibles que puedes intentar:

    1. Verifica si la extensión está habilitada en tu archivo php.ini:
      Aunque ya has confirmado que la extensión http está incluida en tu archivo php.ini, es posible que haya múltiples archivos php.ini en tu sistema y se esté utilizando el incorrecto. Para verificar que se esté utilizando el archivo php.ini correcto, puedes utilizar el comando php --ini para ver qué archivo de configuración está utilizando PHP.
    2. 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á buscando php_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.

    3. 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.

    4. 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:

    1. Intenta cargar manualmente la extensión:
      Podrías intentar cargar manualmente la extensión http utilizando la función dl() en tu código PHP. Por ejemplo:

      dl('http.dll');
      

      Ten en cuenta que utilizar dl() generalmente no se recomienda, y es posible que no funcione dependiendo de tu configuración de PHP.

    2. 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.

Comments are closed.