Heim > Artikel > Backend-Entwicklung > Lösung für den Fehler beim Aufruf der gd-Erweiterung in PHP, der durch ein libpng-Versionsproblem verursacht wurde
Schreiben Sie ein Skript test.php, um gd zu testen, und führen Sie es dann in der Befehlszeile aus. Die Fehlermeldung lautet wie folgt:
php test.phplibpng warning: Application was compiled with png.h from libpng-1.5.6 libpng warning: Application is running with png.c from libpng-1.2.49 libpng error: Incompatible libpng version in application and library [read_png_file] png_create_read_struct failed
Ich bin sehr verwirrt Der Speicherort des PNG wurde angegeben – with-png-dir=/usr/local/libpng. Bei Verwendung von 1.5.6 wird die integrierte libpng-1.2.49 während der Ausführung aufgerufen, also die libpng-1.2.49 des Systems gelöscht (weil ich gerade die Testumgebung gelöscht habe (der Online-Server kümmert sich um sich selbst) und ich habe versucht, PHP neu zu kompilieren, aber es konnte nicht kompiliert werden. Tipp: (Das liegt daran, dass gd aufgerufen wird, also kann PHP Ich werde es beim Kompilieren der GD-Bibliothek nicht finden)
/usr/bin/ld: cannot find -lpng12 collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] Error 1
Ich vermute, die Systembibliothek wird standardmäßig aufgerufen! ! ! Es gibt nur zwei Orte zum Kompilieren und Aufrufen von PNG. Der eine ist der PHP-Kompilierungsparameter –with-png-dir=/usr/local/libpng und der andere ist die gd-Bibliothek. Daher habe ich gd neu kompiliert und beim Kompilieren diese beiden Zeilen gefunden :
Es stellt sich heraus, dass in gd die libpng-1.2.49 des Systems aufgerufen wurde. Die Nummern libpng12, libpng15 und libpng16 stellen übrigens die Versionsnummern 1.2 dar. Es gibt zwei Methoden:
1. Löschen Sie diejenigen, die mit dem System geliefert werden. Ich befürchte, dass es zu gegenseitigen Abhängigkeiten und Folgeerscheinungen kommt. Nachdem
gelöscht wurde, lautet es:
2. Beide Versionen können beibehalten werden. Ändern Sie nach der Kompilierung das Makefile.checking for libpng12-config... no checking for libpng-config... /usr/local/bin/libpng-config
Ändern Sie den Wert von LIBPNG12_CONFIG in Zeile 262 so, dass er mit LIBPNG_CONFIG übereinstimmt, z. B.:
zuLIBPNG12_CONFIG = /usr/bin/libpng12-config LIBPNG_CONFIG = /usr/local/bin/libpng-configändern und dann make && make install erstellen Das ist in Ordnung.
LIBPNG12_CONFIG = /usr/local/bin/libpng-config LIBPNG_CONFIG = /usr/local/bin/libpng-config