Avertissement PHP: Démarrage PHP: impossible de charger la bibliothèque dynamique


94

J'exécute un script PHP et j'obtiens cette erreur:

Avertissement PHP: Démarrage PHP: Impossible de charger la bibliothèque dynamique '/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: impossible d'ouvrir le fichier objet partagé: aucun fichier ou répertoire de ce type dans Inconnu à la ligne 0

Qu'est-ce que ça veut dire?

Réponses:


55

Cela signifie qu'il y a une ligne extension=...ou zend_extension=...dans l'un de vos fichiers de configuration php (php.ini, ou un autre proche) qui essaie de charger cette extension:ixed.5.2.lin

Malheureusement, ce fichier ou chemin n'existe pas ou les autorisations sont incorrectes.

  1. Essayez de rechercher dans les .inifichiers chargés par PHP ( phpinfo()peut indiquer lesquels) - l'un d'eux devrait essayer de charger cette extension.
  2. Corrigez le chemin du fichier ou mettez en commentaire la ligne correspondante.

6
Donc j'obtiens aussi cette erreur, mais mon site fonctionne toujours - c'est la partie la plus étrange. Pour ce type d'erreur, je suppose que php planterait dès le début. Au lieu de cela, j'obtiens ma page, mais mon enregistreur enregistre cette erreur. Bizarre hein?
BT

1
Dans le php.ini (/etc/php.ini dans mon cas), j'ai commenté l' extension de ligne = php_pdo_mysql.dll et redémarré Apache, ce qui a résolu mon problème et éliminé les avertissements. (Mac, Maverick)
ola

Soit corriger le chemin de quel chemin parle-t-on?
prats1411

3. ou installez l'extension attendue manquante
Andrew

@ prats1411 dans le fichier ini: extension = [chemin ici]
Andrew

37

Si vous êtes sous Linux, vous pouvez trouver tous les fichiers de configuration chargés en tapant ceci dans le shell:

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

MISE À JOUR: Comme mentionné dans les commentaires, cela peut être encore plus précis:

php -i | grep ini

5
php -i | grep inidevrait fonctionner correctement aussi (pas besoin d'imprimer le phpinfo lorsque vous avez un argument de commande pour cela)
YorickH

1
J'ai eu une erreur similaire mais je phpinfo()n'ai répertorié aucun fichier ini problématique. php -i | grep inicomme suggéré par YorickH a fonctionné pour moi. Cela listera les bibliothèques chargées pour la CLI et comme il s'est avéré que le fichier ini qui a provoqué l'avertissement se trouvait dans le répertoire CLI dans mon cas.
DaneeL

7
que diriez-vous php --inide lister tous les fichiers ini
OzzyCzech

17

Si vous voulez simplement faire disparaître l'erreur et que vous n'avez pas besoin de l'extension, alors commentez la ligne php.ini. Mais si vous souhaitez réellement résoudre le problème, voici quelques informations supplémentaires.

Il existe différentes causes à cela en fonction du module exact, mais il existe également des directives générales.

  1. Ouvrez phpinfo()et recherchez extension_dirsous la Coresection. C'est là que vos modules doivent être situés.

Par exemple, /usr/lib/php/modulespour Unix / Linux.

  1. Si le fichier existe effectivement, assurez-vous que les autorisations sont adéquates.
  2. Si le fichier n'existe pas, utilisez les ressources ci-dessous pour l'installer.

Installation sur * nix (PEAR)
Installation d'extensions sous Windows


perl install <module>Can't open perl script "install": File or Directory not found
J'essaye

Il est difficile de connaître le problème, de vérifier vos chemins et vos autorisations.
EternalHour

si dans un conteneur essayezdocker-php-ext-install <package>
jiggunjer

13

phpStom avec XAMPP

TL; DR Sauf pour vérifier que les fichiers existent, vous devrez peut-être ajouter la lettre de lecteur à certains enregistrements de votre fichier php.ini

J'ai soudainement commencé à avoir un problème avec phpStorm 7 pour déboguer php avec xampp et xdebug. En essayant de définir l'interperter intellij sur xampps php, j'ai reçu de nombreux avertissements comme celui de la question, par exemple:

Impossible de charger la bibliothèque dynamique '/xampp/php/ext/php_bz2.dll'

Pour une raison quelconque, j'ai dû ajouter ma lettre de lecteur aux enregistrements d'extension_dir et de navigation dans le fichier php.ini:

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

à

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

2
Cela a résolu le
problème

1
Cela a résolu le
problème

6

php -r "echo php_ini_loaded_file();"

S'affichera dans le fichier chargé ini actuel de la CLI, recherchez votre extension, le chemin d'accès est incorrect.


4

Chargement de .dll sous Linux

J'ai rencontré ce message d'avertissement alors que j'essayais d'installer une extension php via le fichier php.ini ;

jusqu'à ce que je comprenne que vous ne pouvez pas charger les extensions .dll sous Linux,

mais vous devez commenter les extensions que vous souhaitez importer ;extension= ... .dllet l' installer correctement viasudo apt-get install php-...

remarque : ...est le nom de l'extension que vous souhaitez activer.


Exactement, pour moi, il manquait simplement l'installation du module - j'installais phpPgAdmin et ce que je devais installer explicitement était sudo apt install php-pgsqlspécifique sudo apt install php7.1-pgsqlà la version php (changer la version 7.1 de votre version php)
jave.web

3

Notez que vous pouvez également obtenir cette erreur si votre bibliothèque PHP n'a pas l'autorisation d'ouverture de répertoire "autre". Dans mon cas particulier, j'ai remarqué cela lors de l'utilisation php -lde la vérification de la syntaxe d'un script dans mon éditeur de texte. Cela signifiait que puisque mon compte s'appelait "volomike", ce compte n'avait pas l'autorisation d'exécuter les bibliothèques sur lesquelles la phpcommande reposait.

Par exemple, sur Ubuntu 14.04, j'ai installé PHP5 automatiquement dans le chemin /usr/lib/php5/20121212+lfs. Cependant, comme je travaillais en C ++ pour créer des objets partagés, j'ai dérangé les autorisations de répertoire et foiré les choses de telle sorte que les comptes non root n'avaient pas les autorisations d'exécution de répertoire (ouverture de répertoire) pour afficher /usr/lib/php5/20121212+lfs. J'ai donc tapé la commande suivante pour corriger ce problème:

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

Maintenant, quand je le fais en php -l example.phptant qu'utilisateur non root, cela ne me donne plus ce problème "Impossible de charger la bibliothèque dynamique".


C'était la solution exacte pour moi, en utilisant Ubuntu 16.10. Assurez-vous de changer l'extension «extension» en .so lorsque vous utilisez Linux (la configuration standard me donnait .dll)
mroesler

J'utilise linux mint 18 et c'est toujours valable
Dika

2

J'ai eu le même problème sur XAMPP pour Windows lorsque j'essaye d'installer composer. J'ai fait une php -verreur de lancement de php:

Impossible de charger la bibliothèque dynamique '/xampp/php/ext/php_bz2.dll'

Il m'a fallu un certain temps avant de réaliser que je devais configurer mon XAMPP. Alors je cours setup_xampp.batet php retourne au travail comme un charme.


2

J'ai eu le même problème sur XAMPP pour Windows10 lorsque j'essaye d'installer composer.

Impossible de charger la bibliothèque dynamique '/xampp/php/ext/php_bz2.dll'

Suivez ensuite ces étapes

  1. ouvrez simplement votre lecteur_xampp_contenant_actuel: \ xampp (dossier_xampp_par défaut) \ php \ php.ini dans texteditor (comme notepad ++)
  2. maintenant il suffit de trouver - est-ce que le lecteur current_xampp_containing_drive: \ xampp existe?
  3. sinon, recherchez le "extension_dir" et obtenez le nom du lecteur (c, d ou le lecteur souhaité) comme.

extension_dir = "F: \ xampp731 \ php \ ext" (ici finded_drive_name_from_the_file is F)

  1. remplacez à nouveau par finded_drive_name_from_the_file: \ xampp par current_xampp_containing_drive: \ xampp et enregistrez.
  2. maintenant, recommencez la progression de l'installation du composeur, je pense que votre problème sera résolu.

1

J'ai eu cette erreur sur un certain nombre de modules lorsque j'exécutais différentes versions de PHP côte à côte sur mon serveur. Pour régler ce problème, j'avais besoin d'installer les packages qu'il ne pouvait pas trouver pour cette version PHP spécifique. Donc, par exemple, si je voyais: -

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

J'installerais spécifiquement la bibliothèque pour la version PHP: -

sudo apt-get install php7.1-xml

Et puis redémarrez Apache. J'ai corrigé ça pour moi. Vous pouvez vérifier votre version comme ceci: -

php -v

1

Après Windows 10 XAMPPmaintenant, j'ai installé LAMPP (XAMPP)sur Ubuntu. Windows XAMPPJ'avais beaucoup moins à configurer que MAC (iOS) mais maintenant avec Linux Ubuntu j'en avais un peu plus car il y en a plus sous Linux (une bonne chose).

J'ai confondu et activé mysqli.dll(et mysql.dll: effacez "#" dans/etc/php/7.2/cli/php.ini

J'ai commencé à recevoir le PHP Warning: PHP Startup: Unable to load dynamic librarymessage lié à dll. J'ai commenté mysql(and i).dlldans le même fichier mais le message n'a pas disparu jusqu'à ce que j'aie commenté "" dans /opt/lampp/etc/php.ini.

On dirait XAMPP lit le php.inifichier depuis /etc/php/7.2/cliet fait modification php.inide /opt/lampp/etc. (; extension = php_pdo_mysql.dll après ";" redémarré Apache et plus de message.


1

Dans mon cas, j'ai eu cette erreur parce que j'ai téléchargé une version thread-safe de la dll (infixée avec -ts-), mais mon installation php de php était non thread-safe (infixée avec -nts-). Le téléchargement de la bonne version de la dll, correspondant exactement à ma version d'installation php, a résolu le problème.


1
Pour vérifier la configuration thread-safe du serveur, voir phpinfo () et thread-safetyactivé / désactivé. Eu la même erreur à l'envers, téléchargé nts lorsqu'il est configuré pour ts.
Andy le

0

J'ai rencontré une erreur similaire. L'erreur que j'ai faite a été d'utiliser le nom du "contrôleur" comme "Pages" au lieu de "pages" dans mon URL.


0

Sous Windows, il peut s'agir d'un chemin erroné dans "Variables d'environnement système". "Chemin" vers le répertoire php.exe doit être le bon.


0

Recherchez l'extension exacte de votre version PHP ici


1
Pourquoi des pilotes Microsoft pour PHP pour SQL Server? Ce n'est pas le sujet de cette question!
csabinho

0

Ce que j'ai fait était;

1 - Je découvre d'abord quelle version de PHP j'utilise via la fonction phpinfo ()

<?php   
    phpinfo();
?>

2 - De là, vous trouverez l'emplacement de votre fichier de configuration (php.ini)

résultat de la méthode phpinfo ()

3 - Ouvrez ce fichier

4 - Commentez la ligne similaire à l'image ci-dessous

Il peut s'agir d'une valeur différente mais elle doit être liée à l'extension. Je ne suis pas un expert mais ce processus m'a aidé à résoudre un problème similaire.

entrez la description de l'image ici


0

«C: /PHP/5.2.13/ext \ php_mcrypt1.dll»

Je dirais qu'il y a une faute de frappe sur votre php.ini (le 1 supplémentaire). Peut-être que vous chargez un php.ini différent de ce que vous attendez (voir la sortie de php.ini pour vous en assurer).

À part cela, assurez-vous que php_mcrypt.dll et PHP:

Ont été liés à la même bibliothèque d'exécution VC (généralement msvcrt.dll pour VC6 ou msvcrt90.dll pour VC9) - utilisez par exemple le navigateur de dépendances pour cela Les deux versions de débogage ou les deux versions de version Les deux ont ZTS activé ou ZTS désactivé Pour les bibliothèques qui dépendent de d'autres bibliothèques (DLL), assurez-vous qu'elles sont disponibles (par exemple dans le même répertoire que l'extension) PHP devrait vous donner des erreurs de signification si l'une des trois premières conditions ci-dessus n'est pas remplie, mais je les ai quand même écrites parce que je ne suis pas sûr pour PHP 5.2.


-1

J'ai eu un problème similaire et voici quelques-uns de tous les avertissements / erreurs.

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 vous consultez les avertissements, vous verrez qu'il recherche des extensions php dans le C:\php\ext\fichier, j'ai téléchargé php dans le C:\répertoire et cela a résolu les problèmes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.