gd를 테스트하기 위해 test.php 스크립트를 작성하고 이를 명령줄에서 실행하면 다음과 같은 오류 메시지가 나타납니다.
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
gd와 php를 컴파일할 때 매우 혼란스럽습니다. png의 위치가 지정되었습니다 – 1.5.6을 사용하여-png-dir=/usr/local/libpng를 사용하여 실행 중에 내장 libpng-1.2.49가 호출되는 이유는 무엇입니까? 그래서 시스템의 libpng-1.2.49는 다음과 같습니다. 삭제되었습니다(왜냐하면 방금 테스트 환경을 삭제했고(온라인 서버가 자체적으로 관리함) PHP를 다시 컴파일하려고 했지만 컴파일할 수 없었기 때문입니다. 팁: (이는 gd가 호출되었기 때문에 PHP가 할 수 없기 때문입니다. gd 라이브러리를 컴파일할 때 찾을 수 없음)
/usr/bin/ld: cannot find -lpng12 collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] Error 1
기본적으로 시스템 라이브러리가 호출되는 것 같아요! ! ! png를 컴파일하고 호출할 수 있는 곳은 두 곳뿐입니다. 하나는 PHP 컴파일 매개변수 –with-png-dir=/usr/local/libpng이고 다른 하나는 gd 라이브러리이므로 gd를 다시 컴파일하고 컴파일 중에 이 두 줄을 발견했습니다. :
gd에서 시스템의 libpng-1.2.49가 호출된 것으로 나타났습니다. 그런데 libpng12, libpng15 및 libpng16이라는 숫자는 버전 번호 1.2를 나타냅니다. 두 가지 방법이 있습니다.
1. 시스템과 함께 제공되는 방법을 삭제하면 안정성이 떨어집니다. 상호의존과 후유증이 생길까 두렵습니다.
이 삭제된 후에는 다음과 같습니다.
2. 두 버전 모두 보존할 수 있습니다. 컴파일 후 Makefile을 수정합니다.checking for libpng12-config... no checking for libpng-config... /usr/local/bin/libpng-config
라인 262에서 LIBPNG12_CONFIG 값을 LIBPNG_CONFIG와 동일하게 수정합니다. 예:
LIBPNG12_CONFIG = /usr/bin/libpng12-config LIBPNG_CONFIG = /usr/local/bin/libpng-config
LIBPNG12_CONFIG = /usr/local/bin/libpng-config LIBPNG_CONFIG = /usr/local/bin/libpng-config