ホームページ > バックエンド開発 > PHPチュートリアル > libpng バージョンの問題が原因で PHP で gd 拡張機能を呼び出すときのエラーの解決策

libpng バージョンの問題が原因で PHP で gd 拡張機能を呼び出すときのエラーの解決策

伊谢尔伦
リリース: 2016-11-26 14:36:05
オリジナル
2308 人が閲覧しました

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 行が見つかりました。コンパイル:

libpng バージョンの問題が原因で PHP で gd 拡張機能を呼び出すときのエラーの解決策

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 になります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート