>  기사  >  백엔드 개발  >  libpng 버전 문제로 인해 PHP에서 gd 확장을 호출할 때 발생하는 오류에 대한 해결 방법

libpng 버전 문제로 인해 PHP에서 gd 확장을 호출할 때 발생하는 오류에 대한 해결 방법

伊谢尔伦
伊谢尔伦원래의
2016-11-26 14:36:052282검색

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를 다시 컴파일하고 컴파일 중에 이 두 줄을 발견했습니다. :

libpng 버전 문제로 인해 PHP에서 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

으로 수정한 다음 && make install 괜찮습니다.
LIBPNG12_CONFIG = /usr/local/bin/libpng-config
LIBPNG_CONFIG = /usr/local/bin/libpng-config

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.