Home > Article > Backend Development > Solution to error when calling gd extension in PHP caused by libpng version problem
Write a script test.php to test gd, and then execute it on the command line. The error message is as follows:
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
I am very confused. When compiling gd and php, the location of png has been specified – with-png-dir=/usr /local/libpng, using 1.5.6, why does it still call the built-in libpng-1.2.49 when executing, so I deleted the system libpng-1.2.49 (because it is a test environment, I just deleted it casually, Online server respects itself), I tried to recompile php, but it couldn’t be compiled, prompt: (This is because gd is called, which causes php to not find it when compiling the gd library)
/usr/bin/ld: cannot find -lpng12 collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] Error 1
I wiped it, the system will be called by default library! ! ! There are only two places to compile and call png. One is the compilation parameter of php -with-png-dir=/usr/local/libpng, and the other is the gd library, so I recompile gd and found these two lines during compilation. :
It turns out that in gd, the system's libpng-1.2.49 has been called. By the way, the numbers libpng12, libpng15, and libpng16 represent version numbers 1.2. There are 2 methods:
1. Delete the one that comes with the system. I think this is not reliable. I am afraid that there will be mutual dependence and sequelae.
After deletion, it will become:
checking for libpng12-config... no checking for libpng-config... /usr/local/bin/libpng-config
2. Both versions can be retained. After compilation, modify the Makefile.
Modify the value of LIBPNG12_CONFIG around line 262 to be the same as LIBPNG_CONFIG, such as:
LIBPNG12_CONFIG = /usr/bin/libpng12-config LIBPNG_CONFIG = /usr/local/bin/libpng-config
Change it to
LIBPNG12_CONFIG = /usr/local/bin/libpng-config LIBPNG_CONFIG = /usr/local/bin/libpng-config
Then just make && make install and it will be OK.