Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn PHP die dynamische Bibliothek nicht laden kann?

Was soll ich tun, wenn PHP die dynamische Bibliothek nicht laden kann?

藏色散人
藏色散人Original
2020-07-23 11:02:313957Durchsuche

Lösung für das Problem, dass PHP die dynamische Bibliothek nicht laden kann: 1. Kopieren Sie „libmySQL.dll“ im PHP-Integrationspaket in das System32-Verzeichnis. 2. Fügen Sie das PHP-Dekomprimierungsverzeichnis zu PATH hinzu Die Konfigurationsdatei verwendet Loadfile, um einige dynamische Linkbibliotheken zu laden.

Was soll ich tun, wenn PHP die dynamische Bibliothek nicht laden kann?

php konnte die dynamische Bibliothek nicht laden

Das PHP-Integrationspaket enthält viele dynamische Linkbibliotheken, aber wann Nach der Konfiguration gemäß den Anweisungen habe ich phpinfo() ausgeführt und festgestellt, dass viele Vorlagen nicht geladen wurden. Allerdings haben wir den Kommentar (;) vor der entsprechenden Linkbibliothek in php.ini entfernt.

Ich habe beim Konfigurieren von WAMP eine sehr interessante Sache entdeckt: Manchmal kann das MySQL-Modul geladen werden, manchmal kann es nicht geladen werden. Nach sorgfältiger Untersuchung habe ich festgestellt, dass MySQL, wenn es geladen werden kann, Installationsdateien verwendet, und wenn es nicht geladen werden kann, verwendet MySQL hauptsächlich komprimierte Pakete. Was ist der Unterschied zwischen den beiden Städten?

Der Unterschied besteht darin, dass Sie während der Installation des Installationspakets wählen können, ob Sie das MySQL-Installationsverzeichnis (./MySQL*.*/bin) zum PATH hinzufügen möchten.

Welche Auswirkungen wird das haben? Es stellt sich heraus, dass sich in diesem Verzeichnis eine Datei mit demselben Namen wie das PHP-Integrationspaket befindet – libmySQL.dll.

Eine Online-Suche hat ergeben, dass es andere Lösungen gibt:

Kopieren Sie libmySQL.dll im PHP-Integrationspaket in das Verzeichnis system32 – dieses Verzeichnis befindet sich normalerweise im PATH; ist eine weitere Möglichkeit, bei der PATH nicht geändert werden muss, nämlich das Hinzufügen eines Satzes zur Apache-Konfigurationsdatei: [loadfile X:/*/libmySQL.dll] verwendet einen absoluten Pfad.

Die Wurzel des Problems scheint gefunden zu sein. Können andere Module es auch auf diese Weise lösen?

Die Antwort lautet: Ja, das können Sie.

Der einfachste Weg besteht darin, das PHP-Dekomprimierungsverzeichnis (normalerweise einschließlich libmysql.dll, php.exe usw.) zum PATH hinzuzufügen.

Dann starten Sie das System neu – ein einfacher Neustart von Apache wird nicht funktionieren Wenn Sie den PATH-Parameter von „Apache Environment“ in phpinfo() überprüfen, werden Sie feststellen, dass sich das Element „PATH“ überhaupt nicht geändert hat, ohne das System neu zu starten . Wer weiß, bitte sagen Sie es mir.

Eine weitere Möglichkeit, eine Änderung von PATH und einen Neustart des Systems zu vermeiden, besteht darin, Loadfile in der Apache-Konfigurationsdatei zu verwenden, um einige dynamische Linkbibliotheken zu laden.

Nach dem Test habe ich die mir bekannten Module und die zu ladenden dynamischen Linkbibliotheken aufgelistet:

  PHP模块      运行时要加载的动态链接库
  ------------------------------------------------------------
  php_fdf.dll                ->fdftk.dll
  php_interbase.dll      ->gds32.dll
  php_pdo_firebird.dll ->gds32.dll
  php_curl.dll               ->ssleay32.dll
  php_ldap.dll             ->ssleay32.dll
  php_openssl.dll        ->ssleay32.dll
  php_mcrypt.dll         ->libmcrypt.dll
  php_mhash.dll         ->libmhash.dll
  php_msql.dll           ->msql.dll
  php_mssql.dll           ->ntwdblib.dll
  php_pdo_mssql.dll   ->ntwdblib.dll
  php_mysql.dll           ->libmysql.dll
  php_mysqli.dll          ->libmysql.dll
  php_pdo_mysql.dll   ->libmysql.dll

Die zu ladenden dynamischen Linkbibliotheken befinden sich alle im integrierten Paketdekomprimierungsverzeichnis von PHP ( normalerweise einschließlich libmysql.dll, php.exe usw.). Es gibt auch drei Dateien in diesem Verzeichnis: fribidi.dll, libeay32.dll und libswish-e.dll. Ich weiß noch nicht, wofür sie verwendet werden. Was den Namen und die Funktion der einzelnen Module betrifft, werde ich nicht näher darauf eingehen.

Empfohlen: „

PHP-Tutorial

Hinweis: Diese Methode ist für die Serien php5.1.X, php5.2.X geeignet, php.4X jedoch nicht getestet.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP die dynamische Bibliothek nicht laden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn