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?
php
dynamic-library
Popolo
quelle
quelle
Wenn Sie unter Linux arbeiten, können Sie alle geladenen Konfigurationsdateien finden, indem Sie dies in die Shell eingeben:
UPDATE: Wie in den Kommentaren erwähnt, kann dies noch genauer sein:
quelle
php -i | grep ini
sollte auch gut funktionieren (keine Notwendigkeit, die phpinfo zu drucken, wenn Sie ein Befehlsargument dafür haben)phpinfo()
habe aber keine problematischen INI-Dateien aufgelistet.php -i | grep ini
wie 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.php --ini
mit allenWenn 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.
phpinfo()
und suchen Sieextension_dir
unter demCore
Abschnitt. Hier sollten sich Ihre Module befinden.Installation unter * nix (PEAR)
Installation von Erweiterungen unter Windows
quelle
perl install <module>
bekam ichCan't open perl script "install": File or Directory not found
docker-php-ext-install <package>
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:
Aus irgendeinem Grund musste ich meinen Laufwerksbuchstaben zu den Datensätzen von extension_dir und browscap in der Datei php.ini hinzufügen:
zu
quelle
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.
quelle
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= ... .dll
und installieren Sie es richtig übersudo apt-get install php-...
Hinweis :
...
ist der Name der Erweiterung, den Sie aktivieren möchten.quelle
sudo apt install php-pgsql
php-version-spezifischsudo apt install php7.1-pgsql
(ändern Sie 7.1 zu Ihrer PHP-Version)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 -l
der 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 derphp
Befehl 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.php
als Nicht-Root-Benutzer arbeite, habe ich nie mehr das Problem "Dynamische Bibliothek kann nicht geladen werden".quelle
Ich hatte das gleiche Problem unter XAMPP für Windows, als ich versuchte, Composer zu installieren. Ich habe
php -v
und PHP Fehler werfen:Es hat eine Weile gedauert, bis mir klar wurde, dass ich mein XAMPP einrichten muss. Also
setup_xampp.bat
renne ich und PHP kehre zurück, um wie ein Zauber zu arbeiten.quelle
Ich hatte das gleiche Problem unter XAMPP für Windows 10, als ich versuchte, Composer zu installieren.
Folgen Sie dann diesen Schritten
quelle
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: -
Ich würde die Bibliothek für die PHP-Version speziell installieren: -
Und dann Apache neu starten. Es wurde für mich behoben. Sie können Ihre Version folgendermaßen überprüfen: -
quelle
Danach habe
Windows 10 XAMPP
ichLAMPP (XAMPP)
auf Ubuntu installiert .Windows XAMPP
hatte 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 library
Nachricht im Zusammenhang mit zu bekommendll
. Ich habemysql(and i).dll
in 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.ini
Datei aus/etc/php/7.2/cli
und macht Änderung inphp.ini
der/opt/lampp/etc
. (; extension = php_pdo_mysql.dll nachdem ";" Apache neu gestartet hat und keine Nachricht mehr.quelle
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.quelle
thread-safety
aktiviert / deaktiviert. Hatte den gleichen Fehler in umgekehrter Reihenfolge, nts heruntergeladen, wenn für ts konfiguriert.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.
quelle
In Windows kann es sich bei "Systemumgebungsvariablen" um einen falschen Pfad handeln. "Pfad" zum Verzeichnis php.exe muss der gute sein.
quelle
Achten Sie auf die genaue Erweiterung für Ihre PHP - Version hier
quelle
Was ich getan habe war;
1 - Ich finde zuerst heraus, welche Version von PHP ich über die Funktion phpinfo () verwende.
2 - Von dort aus finden Sie den Speicherort Ihrer Konfigurationsdatei (php.ini)
3 - Öffnen Sie diese Datei
4 - Kommentieren Sie die Zeile ähnlich dem Bild unten aus
quelle
'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.
quelle
Ich hatte ein ähnliches Problem und unten sind einige der Warnungen / Fehler.
Wenn Sie die Warnungen durchsehen, werden Sie sehen, dass es nach PHP-Erweiterungen sucht.
C:\php\ext\
Ich habe PHP in dasC:\
Verzeichnis heruntergeladen und das hat die Probleme gelöst.quelle