Advertencia de PHP: Inicio de PHP: no se puede cargar la biblioteca dinámica


95

Ejecuto un script PHP y obtengo este error:

Advertencia de PHP: Inicio de PHP: No se puede cargar la biblioteca dinámica '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio en Desconocido en la línea 0

Qué significa eso?

Respuestas:


56

Significa que hay una línea extension=...o zend_extension=...en uno de sus archivos de configuración php (php.ini u otro cercano) que está intentando cargar esa extensión:ixed.5.2.lin

Desafortunadamente, ese archivo o ruta no existe o los permisos son incorrectos.

  1. Intente buscar en los .iniarchivos que se cargan con PHP ( phpinfo()puede indicar cuáles son); uno de ellos debería intentar cargar esa extensión.
  2. Corrija la ruta al archivo o comente la línea correspondiente.

6
También recibo este error, pero mi sitio todavía funciona, esa es la parte más extraña. Para este tipo de error, supongo que php se bloqueará desde el principio. En su lugar, obtengo mi página, pero mi registrador está registrando este error. Extraño, ¿eh?
BT

1
En php.ini (/etc/php.ini en mi caso) comenté la extensión de línea = php_pdo_mysql.dll y reinicié Apache que resolvió mi problema y eliminé las advertencias. (Mac, Maverick)
ola

¿O corregir el camino de qué camino estamos hablando?
prats1411

3. o instale la extensión esperada que falta
Andrew

@ prats1411 en el archivo ini: extensión = [ruta aquí]
Andrew

37

Si está en Linux, puede encontrar todos los archivos de configuración cargados escribiendo esto en el shell:

php -r "print phpinfo();" | grep ".ini"

ACTUALIZACIÓN: Como se mencionó en los comentarios, esto puede ser aún más preciso:

php -i | grep ini

5
php -i | grep initambién debería funcionar bien (no es necesario imprimir el phpinfo cuando tiene un argumento de comando para eso)
YorickH

1
Tuve un error similar pero phpinfo()no enumeré ningún archivo ini problemático. php -i | grep inicomo lo sugirió YorickH funcionó para mí. Esto enumerará las bibliotecas cargadas para la CLI y, como resultó, el archivo ini que causó la advertencia estaba en el directorio CLI en mi caso.
DaneeL

7
¿qué hay php --inide enumerar todos los archivos ini?
OzzyCzech

17

Si solo desea que el error desaparezca, y no necesita la extensión, entonces, por supuesto, comente la línea php.ini. Pero si realmente desea solucionar el problema, aquí hay información adicional.

Hay varias causas para esto según el módulo exacto, pero también hay algunas pautas generales.

  1. Abra phpinfo()y busque extension_dirdebajo de la Coresección. Aquí es donde deben ubicarse sus módulos.

Por ejemplo, /usr/lib/php/modulespara Unix / Linux.

  1. Si el archivo existe, asegúrese de que los permisos sean adecuados.
  2. Si el archivo no existe, utilice los recursos siguientes para instalarlo.

Instalación en * nix (PEAR)
Instalación de extensiones en Windows


Estoy tratando de instalar a través de este módulo de pera, pero cuando lo perl install <module>Can't open perl script "install": File or Directory not found
ejecuté

Es difícil conocer el problema, verifique sus rutas y permisos.
EternalHour

si en un contenedor intentedocker-php-ext-install <package>
jiggunjer

13

phpStom con XAMPP

TL; DR Excepto para verificar que los archivos existen, es posible que deba agregar la letra de la unidad a algunos registros en su archivo php.ini

De repente comencé a tener un problema al usar phpStorm 7 para depurar php con xampp y xdebug. Al intentar configurar intellij interperter para que sea xampps php, recibí muchas advertencias como la de la pregunta, por ejemplo:

No se puede cargar la biblioteca dinámica '/xampp/php/ext/php_bz2.dll'

Por alguna razón, tuve que agregar mi letra de unidad a los registros de extension_dir y browscap en el archivo php.ini:

extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"

a

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"

2
Esto me solucionó en Windows 10.
Justin Eldracher

1
Esto me solucionó en Windows 7. Muchas gracias
Paramjeet

6

php -r "echo php_ini_loaded_file();"

Aparecerá en CLI el archivo ini actual cargado, busque allí su extensión, la ruta es incorrecta.


4

Cargando .dll en Linux

Encontré este mensaje de advertencia mientras intentaba instalar una extensión php a través del archivo php.ini ;

hasta que descubrí que no se pueden cargar extensiones .dll en Linux,

pero tienes que comentar las extensiones que quieres importar ;extension= ... .dlle instalarlo correctamente víasudo apt-get install php-...

nota : ...es el nombre de la extensión que desea habilitar.


Exactamente, para mí simplemente faltaba la instalación del módulo: estaba instalando phpPgAdmin y lo que necesitaba instalar explícitamente era sudo apt install php-pgsqluna versión específica de php sudo apt install php7.1-pgsql(cambie 7.1 a su versión de php)
jave.web

3

Tenga en cuenta que también puede obtener este error si su biblioteca PHP no tiene el permiso de apertura de directorio "otro". En mi caso particular, noté esto al usar php -lpara verificar la sintaxis de un script en mi editor de texto. Esto significaba que, dado que mi cuenta se llamaba "volomike", esa cuenta no tenía permiso para ejecutar las bibliotecas en las que se phpbasaba el comando.

Por ejemplo, en Ubuntu 14.04, tenía PHP5 instalado automáticamente en la ruta /usr/lib/php5/20121212+lfs. Sin embargo, debido a que estaba trabajando en C ++ en la construcción de algunos objetos compartidos, me equivoqué con los permisos del directorio y arruiné las cosas de tal manera que las cuentas que no eran root no tenían los permisos de ejecución de directorio (directorio abierto) para ver /usr/lib/php5/20121212+lfs. Entonces, escribí el siguiente comando para rectificar ese problema:

sudo chmod o+x /usr/lib/php5/20121212+lfs.

Ahora, cuando lo hago php -l example.phpcomo usuario no root, nunca más me da este problema de "No se puede cargar la biblioteca dinámica".


Esta fue la solución exacta para mí, usando Ubuntu 16.10. Asegúrese de cambiar la extensión "extensión" a .so cuando use Linux (la configuración estándar me estaba dando .dll)
mroesler

Estoy usando linux mint 18 y esto sigue siendo válido
Dika

2

Tuve el mismo problema en XAMPP para Windows cuando intento instalar el compositor. Lo hice php -vy php arrojando error:

No se puede cargar la biblioteca dinámica '/xampp/php/ext/php_bz2.dll'

Me tomó un tiempo hasta que me di cuenta de que necesito configurar mi XAMPP. Así que corro setup_xampp.baty php vuelve a funcionar como un encanto.


2

Tuve el mismo problema en XAMPP para Windows10 cuando intento instalar el compositor.

No se puede cargar la biblioteca dinámica '/xampp/php/ext/php_bz2.dll'

Entonces sigue estos pasos

  1. simplemente abra su current_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini en texteditor (como notepad ++)
  2. ahora solo encuentra - ¿existe current_xampp_containing_drive: \ xampp?
  3. si no, busque el "extension_dir" y obtenga el nombre de la unidad (c, do la unidad deseada) como.

extension_dir = "F: \ xampp731 \ php \ ext" (aquí finded_drive_name_from_the_file es F)

  1. reemplace nuevamente con finded_drive_name_from_the_file: \ xampp con current_xampp_containing_drive: \ xampp y guarde.
  2. ahora vuelva a iniciar el progreso de la instalación del compositor, creo que su problema se resolverá.

1

Tuve este error en varios módulos cuando había estado ejecutando diferentes versiones de PHP en paralelo en mi servidor. Para solucionar esto, necesitaba instalar los paquetes que no pudo encontrar para esa versión específica de PHP. Entonces, por ejemplo, si vi: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

Instalaría la biblioteca para la versión de PHP específicamente: -

sudo apt-get install php7.1-xml

Y luego reinicie Apache. Me lo arregló. Puede verificar su versión de esta manera: -

php -v

1

Después de Windows 10 XAMPPahora lo instalé LAMPP (XAMPP)en Ubuntu. Windows XAMPPtenía mucho menos que configurar en comparación con MAC (iOS), pero ahora con Linux Ubuntu tenía algunos más ya que hay más en Linux (algo bueno).

Confundí y activado mysqli.dll(y mysql.dll: borrado "#" en/etc/php/7.2/cli/php.ini

Empecé a recibir el PHP Warning: PHP Startup: Unable to load dynamic librarymensaje relacionado con dll. Comenté mysql(and i).dllen el mismo archivo, pero el mensaje no desapareció hasta que hice un comentario "" en /opt/lampp/etc/php.ini.

Se parece a XAMPP lee php.iniarchivo desde /etc/php/7.2/cliy hace que la modificación de php.inide /opt/lampp/etc. (; extension = php_pdo_mysql.dll después de ";" reiniciar Apache y no más ningún mensaje.


1

En mi caso, recibí este error porque descargué una versión segura para subprocesos de la dll (infijada con -ts-), pero mi instalación php de php no era segura para subprocesos (infijada con -nts-). La descarga de la versión correcta del dll, que coincidía exactamente con mi versión de instalación de php, solucionó el problema.


1
Para verificar la configuración segura para subprocesos del servidor, consulte phpinfo () y thread-safetyhabilitado / deshabilitado. Tenía el mismo error al revés, descargó nts cuando se configuró para ts.
Andy

0

Encontré un error similar. El error que cometí fue utilizar el nombre del "controlador" como "Páginas" en lugar de "páginas" en mi URL.


0

En Windows, podría ser una ruta incorrecta en "Variables de entorno del sistema". La "ruta" al directorio php.exe debe ser la correcta.


0

Busque la extensión exacta para su versión de PHP aquí


1
¿Por qué para los controladores de Microsoft para PHP para SQL Server? ¡De eso no se trata esta pregunta!
csabinho

0

Lo que hice fue;

1 - Primero averiguo qué versión de PHP estoy usando a través de la función phpinfo ()

<?php   
    phpinfo();
?>

2 - Desde allí encontrará la ubicación de su archivo de configuración (php.ini)

método phpinfo () resultado

3 - Abre ese archivo

4 - Comente la línea similar a la imagen de abajo

Este puede ser un valor diferente, pero debería estar relacionado con la extensión. No soy un experto, pero este proceso me ayudó a resolver un problema similar.

ingrese la descripción de la imagen aquí


0

'C: /PHP/5.2.13/ext \ php_mcrypt1.dll'

Yo diría que hay algún error tipográfico en su php.ini (el 1 adicional). Quizás esté cargando un php.ini diferente de lo que esperaba (vea la salida de php.ini para asegurarse).

Aparte de eso, asegúrese de que php_mcrypt.dll y PHP:

Estuvieron vinculados a la misma biblioteca de tiempo de ejecución de VC (normalmente msvcrt.dll para VC6 o msvcrt90.dll para VC9); use, por ejemplo, el analizador de dependencias para esto. Son compilaciones de depuración o versiones de versiones. más bibliotecas (DLL), asegúrese de que estén disponibles (por ejemplo, en el mismo directorio que la extensión) PHP debería darle errores significativos si alguna de las tres primeras condiciones anteriores no se cumple, pero las escribí de todos modos porque no estoy seguro para PHP 5.2.


-1

Tuve un problema similar y a continuación se muestran algunas de todas las advertencias / errores.

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

Si revisa las advertencias, verá que está buscando extensiones de php en el C:\php\ext\, así que descargué php en el C:\directorio y eso resolvió los problemas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.