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 の場所が指定されています。 -png-dir=/usr /local/libpng、1.5.6 を使用していますが、実行時にまだ組み込みの 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 をコンパイルして呼び出す場所は 2 つだけです。1 つは php -with-png-dir=/usr/local/libpng のコンパイル パラメーターで、もう 1 つは gd ライブラリです。そのため、gd を再コンパイルすると、これらの 2 行が見つかりました。コンパイル:
gd では、システムの libpng-1.2.49 が呼び出されていることがわかります。 ちなみに、libpng12、libpng15、libpng16 はバージョン番号 1.2 を表します。
1. システムに付属しているものを削除します。依存性と後遺症。
削除後は次のようになります:
checking for libpng12-config... no checking for libpng-config... /usr/local/bin/libpng-config
2. コンパイル後、Makefile を変更します。
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
に変更します。その後、 make && make install するだけで OK になります。