PHP-Warnung: PHP-Start: Dynamische Bibliothek kann nicht geladen werden

94

Ich führe ein PHP-Skript aus und erhalte folgende Fehlermeldung:

PHP-Warnung: PHP-Start: Dynamische Bibliothek '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions kann nicht geladen werden /no-debug-non-zts-20090626/ixed.5.2.lin: Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in Unbekannt in Zeile 0

Was bedeutet das?

Popolo
quelle

Antworten:

55

Es bedeutet, dass eine extension=...oder mehrerezend_extension=... Zeilen in einer Ihrer PHP-Konfigurationsdateien (php.ini oder eine andere in der Nähe davon) versuchen, diese Erweiterung zu laden:ixed.5.2.lin

Leider existiert diese Datei oder dieser Pfad nicht oder die Berechtigungen sind falsch.

  1. Versuchen Sie, in den .inivon PHP geladenen Dateien zu suchen ( phpinfo()kann angeben, welche es sind) - einer von ihnen sollte versuchen, diese Erweiterung zu laden.
  2. Korrigieren Sie entweder den Pfad zur Datei oder kommentieren Sie die entsprechende Zeile aus.
Pascal MARTIN
quelle
6
Ich erhalte auch diesen Fehler, aber meine Website funktioniert immer noch - das ist der seltsamste Teil. Für diese Art von Fehler würde ich annehmen, dass PHP von Anfang an abstürzen würde. Stattdessen erhalte ich meine Seite, aber mein Logger protokolliert diesen Fehler. Seltsam, oder?
BT
1
In der php.ini (in meinem Fall /etc/php.ini) habe ich die Zeilenerweiterung = php_pdo_mysql.dll auskommentiert und Apache neu gestartet, wodurch mein Problem gelöst und die Warnungen beseitigt wurden. (Mac, Maverick)
Ola
Korrigieren Sie entweder den Pfad, über welchen Pfad sprechen wir?
Prats1411
3. oder installieren Sie die fehlende erwartete Erweiterung
Andrew
@ Prats1411 in der INI-Datei: Erweiterung = [Pfad hier]
Andrew
37

Wenn Sie unter Linux arbeiten, können Sie alle geladenen Konfigurationsdateien finden, indem Sie dies in die Shell eingeben:

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

UPDATE: Wie in den Kommentaren erwähnt, kann dies noch genauer sein:

php -i | grep ini
nefski
quelle
5
php -i | grep inisollte auch gut funktionieren (keine Notwendigkeit, die phpinfo zu drucken, wenn Sie ein Befehlsargument dafür haben)
YorickH
1
Ich hatte einen ähnlichen Fehler, phpinfo()habe aber keine problematischen INI-Dateien aufgelistet. php -i | grep iniwie von YorickH vorgeschlagen hat für mich gearbeitet. Dadurch werden die für die CLI geladenen Bibliotheken aufgelistet, und wie sich herausstellte, befand sich die INI-Datei, die die Warnung verursacht hat, in meinem Fall im CLI-Verzeichnis.
DaneeL
7
Was ist php --inimit allen
INI-
17

Wenn Sie den Fehler nur verschwinden lassen möchten und die Erweiterung nicht benötigen, kommentieren Sie auf jeden Fall die Zeile in php.ini. Wenn Sie das Problem jedoch tatsächlich beheben möchten, finden Sie hier einige zusätzliche Informationen.

Es gibt verschiedene Ursachen dafür, basierend auf dem genauen Modul, aber es gibt auch einige allgemeine Richtlinien.

  1. Öffnen phpinfo()und suchen Sie extension_dirunter dem CoreAbschnitt. Hier sollten sich Ihre Module befinden.

Zum Beispiel /usr/lib/php/modulesfür Unix / Linux.

  1. Wenn die Datei tatsächlich vorhanden ist, stellen Sie sicher, dass die Berechtigungen ausreichend sind.
  2. Wenn die Datei nicht vorhanden ist, verwenden Sie die folgenden Ressourcen, um sie zu installieren.

Installation unter * nix (PEAR)
Installation von Erweiterungen unter Windows

Ewige Stunde
quelle
Ich versuche, durch dieses Birnenmodul zu installieren, aber als ich lief, perl install <module>bekam ichCan't open perl script "install": File or Directory not found
Fabiotk
Es ist schwierig, das Problem zu kennen, Ihre Pfade und Berechtigungen zu überprüfen.
Ewige Stunde
Wenn in einem Container versuchendocker-php-ext-install <package>
Jiggunjer
13

phpStom mit XAMPP

TL; DR Abgesehen von der Überprüfung, ob die Dateien vorhanden sind, müssen Sie möglicherweise den Laufwerksbuchstaben zu einigen Datensätzen in Ihrer php.ini-Datei hinzufügen

Ich hatte plötzlich ein Problem mit phpStorm 7 zum Debuggen von PHP mit xampp und xdebug. Beim Versuch, den Intellij Interperter auf xampps php einzustellen, wurden viele Warnungen angezeigt, wie die in der Frage, zum Beispiel:

Dynamische Bibliothek '/xampp/php/ext/php_bz2.dll' kann nicht geladen werden.

Aus irgendeinem Grund musste ich meinen Laufwerksbuchstaben zu den Datensätzen von extension_dir und browscap in der Datei php.ini hinzufügen:

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

zu

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"
Technotronic
quelle
2
Dies hat es für mich unter Windows 10 behoben.
Justin Eldracher
1
Dies hat es für mich unter Windows 7 behoben. Vielen Dank
Paramjeet
6

php -r "echo php_ini_loaded_file();"

Zeigt in der CLI die aktuelle ini geladene Datei an, sucht dort nach Ihrer Erweiterung, der Pfad dazu ist falsch.

Błażej Krzakala
quelle
4

Laden der DLL unter Linux

Ich habe diese Warnmeldung erhalten, als ich versucht habe, eine PHP-Erweiterung über die Datei php.ini zu installieren .

bis ich herausgefunden habe, dass Sie unter Linux keine DLL- Erweiterungen laden können ,

aber Sie haben kommentieren die Erweiterungen , die Sie importieren möchten , ;extension= ... .dllund installieren Sie es richtig übersudo apt-get install php-...

Hinweis : ...ist der Name der Erweiterung, den Sie aktivieren möchten.

Marco DG
quelle
Genau, für mich fehlte einfach die Modulinstallation - ich installierte phpPgAdmin und was ich explizit installieren musste, war sudo apt install php-pgsqlphp-version-spezifisch sudo apt install php7.1-pgsql(ändern Sie 7.1 zu Ihrer PHP-Version)
jave.web
3

Beachten Sie, dass Sie diesen Fehler auch erhalten können, wenn Ihre PHP-Bibliothek nicht über die Berechtigung zum Öffnen des "anderen" Verzeichnisses verfügt. In meinem speziellen Fall ist mir dies bei php -lder Syntaxprüfung eines Skripts in meinem Texteditor aufgefallen . Dies bedeutete, dass mein Konto, da es "volomike" genannt wurde, keine Berechtigung zum Ausführen der Bibliotheken hatte, auf die sich der phpBefehl stützte.

Zum Beispiel hatte ich unter Ubuntu 14.04 PHP5 automatisch im Pfad installiert /usr/lib/php5/20121212+lfs. Da ich jedoch in C ++ beim Erstellen einiger freigegebener Objekte gearbeitet habe, habe ich mit den Verzeichnisberechtigungen herumgespielt und die Dinge so durcheinander gebracht, dass Nicht-Root-Konten nicht über die Berechtigungen zum Ausführen des Verzeichnisses (Verzeichnis geöffnet) zum Anzeigen verfügten /usr/lib/php5/20121212+lfs. Also habe ich den folgenden Befehl eingegeben, um dieses Problem zu beheben:

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

Wenn ich jetzt php -l example.phpals Nicht-Root-Benutzer arbeite, habe ich nie mehr das Problem "Dynamische Bibliothek kann nicht geladen werden".

Volomike
quelle
Dies war die genaue Lösung für mich mit Ubuntu 16.10. Stellen Sie sicher, dass Sie die Erweiterung "Erweiterung" in .so ändern, wenn Sie Linux verwenden (Standardkonfiguration gab mir .dll)
mroesler
Ich benutze Linux Mint 18 und dies ist immer noch gültig
Dika
2

Ich hatte das gleiche Problem unter XAMPP für Windows, als ich versuchte, Composer zu installieren. Ich habe php -vund PHP Fehler werfen:

Dynamische Bibliothek '/xampp/php/ext/php_bz2.dll' kann nicht geladen werden.

Es hat eine Weile gedauert, bis mir klar wurde, dass ich mein XAMPP einrichten muss. Also setup_xampp.batrenne ich und PHP kehre zurück, um wie ein Zauber zu arbeiten.

Prima Putra
quelle
2

Ich hatte das gleiche Problem unter XAMPP für Windows 10, als ich versuchte, Composer zu installieren.

Dynamische Bibliothek '/xampp/php/ext/php_bz2.dll' kann nicht geladen werden.

Folgen Sie dann diesen Schritten

  1. Öffnen Sie einfach Ihr aktuelles_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini im Texteditor (wie Notepad ++).
  2. Jetzt einfach finden - ist das aktuelle_xampp_containing_drive: \ xampp vorhanden?
  3. Wenn nicht, suchen Sie das "extension_dir" und erhalten Sie den Laufwerksnamen (c, d oder Ihr gewünschtes Laufwerk) wie.

extension_dir = "F: \ xampp731 \ php \ ext" (hier ist der gefundene Laufwerksname_von_der_Datei F)

  1. Ersetzen Sie erneut durch finded_drive_name_from_the_file: \ xampp durch current_xampp_containing_drive: \ xampp und speichern Sie.
  2. Starten Sie jetzt erneut den Installationsfortschritt des Komponisten. Ich denke, Ihr Problem wird gelöst sein.
Anjani Barnwal
quelle
1

Ich hatte diesen Fehler auf einer Reihe von Modulen, als ich verschiedene Versionen von PHP nebeneinander auf meinem Server ausgeführt hatte. Um dies zu klären, musste ich die Pakete installieren, die für diese bestimmte PHP-Version nicht gefunden wurden. Also zum Beispiel, wenn ich sah: -

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

Ich würde die Bibliothek für die PHP-Version speziell installieren: -

sudo apt-get install php7.1-xml

Und dann Apache neu starten. Es wurde für mich behoben. Sie können Ihre Version folgendermaßen überprüfen: -

php -v
Stange
quelle
1

Danach habe Windows 10 XAMPPich LAMPP (XAMPP)auf Ubuntu installiert . Windows XAMPPhatte viel weniger zu konfigurieren im Vergleich zu MAC (iOS), aber jetzt mit Linux Ubuntu hatte ich ein paar mehr, da unter Linux mehr los ist (eine gute Sache).

Ich habe verwirrt und aktiviert mysqli.dll(und mysql.dll: lösche "#" in/etc/php/7.2/cli/php.ini

Ich fing an, die PHP Warning: PHP Startup: Unable to load dynamic libraryNachricht im Zusammenhang mit zu bekommen dll. Ich habe mysql(and i).dllin derselben Datei auskommentiert, aber die Nachricht wurde erst angezeigt, als ich "" in auskommentiert habe /opt/lampp/etc/php.ini.

Sieht aus wie XAMPP liest php.iniDatei aus /etc/php/7.2/cliund macht Änderung in php.inider /opt/lampp/etc. (; extension = php_pdo_mysql.dll nachdem ";" Apache neu gestartet hat und keine Nachricht mehr.

Mehmet F Erten
quelle
1

In meinem Fall habe ich diesen Fehler erhalten, weil ich eine thread-sichere Version der DLL heruntergeladen habe (mit fixiert -ts-), aber meine PHP-Installation von PHP war nicht thread-sicher (mit fixiert mit -nts-). Das Herunterladen der richtigen Version der DLL, die genau zu meiner PHP-Installationsversion passt, hat das Problem behoben.

Klesun
quelle
1
Informationen zur Überprüfung der Thread-sicheren Serverkonfiguration finden Sie unter phpinfo () und thread-safetyaktiviert / deaktiviert. Hatte den gleichen Fehler in umgekehrter Reihenfolge, nts heruntergeladen, wenn für ts konfiguriert.
Andy
0

Ich habe einen ähnlichen Fehler festgestellt. Der Fehler, den ich gemacht habe, war, den Namen "Controller" als "Seiten" anstelle von "Seiten" in meiner URL zu verwenden.

Ninad Kulkarni
quelle
0

In Windows kann es sich bei "Systemumgebungsvariablen" um einen falschen Pfad handeln. "Pfad" zum Verzeichnis php.exe muss der gute sein.

François Breton
quelle
0

Achten Sie auf die genaue Erweiterung für Ihre PHP - Version hier

Martin Kinuthia
quelle
1
Warum für Microsoft-Treiber für PHP für SQL Server? Darum geht es in dieser Frage nicht!
Csabinho
0

Was ich getan habe war;

1 - Ich finde zuerst heraus, welche Version von PHP ich über die Funktion phpinfo () verwende.

<?php   
    phpinfo();
?>

2 - Von dort aus finden Sie den Speicherort Ihrer Konfigurationsdatei (php.ini)

Methode phpinfo () Ergebnis

3 - Öffnen Sie diese Datei

4 - Kommentieren Sie die Zeile ähnlich dem Bild unten aus

Dies kann ein anderer Wert sein, sollte sich jedoch auf die Erweiterung beziehen. Ich bin kein Experte, aber dieser Prozess hat mir geholfen, ein ähnliches Problem zu lösen.

Geben Sie hier die Bildbeschreibung ein

newProgramm3r
quelle
0

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

Ich würde sagen, es gibt einen Tippfehler auf Ihrer php.ini (die zusätzliche 1). Vielleicht laden Sie eine andere php.ini als erwartet (siehe die Ausgabe von php.ini, um sicherzugehen).

Stellen Sie ansonsten sicher, dass php_mcrypt.dll und PHP:

Wurden mit derselben VC-Laufzeitbibliothek verknüpft (normalerweise msvcrt.dll für VC6 oder msvcrt90.dll für VC9) - verwenden Sie dazu z. B. den Abhängigkeits-Walker. Sind beide Debug-Builds oder beide Release-Builds? Beide haben ZTS aktiviert oder ZTS deaktiviert. Für Bibliotheken, die davon abhängen Weitere Bibliotheken (DLLs), stellen Sie sicher, dass sie verfügbar sind (z. B. im selben Verzeichnis wie die Erweiterung). PHP sollte Ihnen Bedeutungsfehler geben, wenn eine der ersten drei oben genannten Bedingungen nicht erfüllt ist, aber ich habe diese trotzdem geschrieben, weil ich nicht sicher bin für PHP 5.2.

Dharmendra Shah
quelle
-1

Ich hatte ein ähnliches Problem und unten sind einige der Warnungen / Fehler.

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

Wenn Sie die Warnungen durchsehen, werden Sie sehen, dass es nach PHP-Erweiterungen sucht. C:\php\ext\Ich habe PHP in das C:\Verzeichnis heruntergeladen und das hat die Probleme gelöst.

Chetam Okafor
quelle