Heim >Backend-Entwicklung >PHP-Tutorial >Lösung für den Fehler beim Aufruf der gd-Erweiterung in PHP, der durch ein libpng-Versionsproblem verursacht wurde

Lösung für den Fehler beim Aufruf der gd-Erweiterung in PHP, der durch ein libpng-Versionsproblem verursacht wurde

伊谢尔伦
伊谢尔伦Original
2016-11-26 14:36:052310Durchsuche

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 :

Lösung für den Fehler beim Aufruf der gd-Erweiterung in PHP, der durch ein libpng-Versionsproblem verursacht wurde

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.:

zu
LIBPNG12_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

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