【Wordpres】siteGuard WP Pluginで画像認証でエラーWarning: imagepng()
つい先日WordpressのセキュリティプラグインsiteGuard WP Pluginで、
ログイン時の画像認証でエラーがでました。
その時のバージョンはWordpress4.9.8–ja、siteGuard WP Pluginが1.4.3。
Warning: imagepng():gd-png: fatal libpng error:Incompatible libpng version in application and library in.. というエラー
特にプラグインやWordpressのバージョンアップをした直後でもなかったのですが、Warnigがでてしまいました。
ぱっと見る限り認証画像を出力する箇所で出ているエラーのようです。
Warning: imagepng(): gd-png: fatal libpng error: Incompatible libping version in application and library in ********/siteguard/reallu-simple-captcha/siteguard-reallu-simple-captcha.php on line 221
エラー内容を和訳してみると、
「アプリケーションとライブラリの互換性のないバージョンのlibping」
との事。
バージョンの互換性がないよ、という事のようですね。
siteguard-reallu-simple-captcha.phpファイルの221行目のimagepng()をimagejpg()に差し替える
imagepng()を使ってpng形式で出力しているわけですが、
libpngライブラリでエラーが出てしまうので、
imagejpg()に差し替えてjpeg形式で出力する事で、
一旦このエラーはクリアにできました。
根本的な解決ではないですが。
<pre class="wp-block-preformatted">//siteguard-reallu-simple-captcha.phpの221行目あたり
switch ( $this->img_type ) {
case 'jpeg':
$filename = sanitize_file_name( $prefix . '.jpeg' );
$file = $this->normalize_path( $dir . $filename );
imagejpeg( $im, $file );
break;
case 'gif':
$filename = sanitize_file_name( $prefix . '.gif' );
$file = $this->normalize_path( $dir . $filename );
imagegif( $im, $file );
break;
case 'png':
default:
$filename = sanitize_file_name( $prefix . '.png' );
$file = $this->normalize_path( $dir . $filename );
////////////ここをimagepng()から差し替え//////////////
imagejpeg( $im, $file );
//////////////////ここを差し替え////////////////////////
}
</pre>