ブログ/2022-06-27 1.38においてjpegのサムネイル生成が行われない件

提供:ct777-wiki
ナビゲーションに移動 検索に移動
ショートカット:
blog/v1.38-jpeg-thumb-error
blog/20220627

https://ct777.miraheze.org/wiki/blog/v1.38-jpeg-thumb-error

PC買い替えのついでにMWを1.38にアップデートしたら、画像のサムネイルに問題発生。PNGでは問題なく生成されるものの、JPGでは生成されない。

JPGだけ真っ白。ちなみに150x150というのはplacehold.jpで得られるダミー

nginx初使用だったのでその辺に起因するのかと調べるも、サーバーのアップロード設定、phpの制限、MWの制限いずれも問題なし。画像を切り抜いたりしても変わらず。

怖いのはMW側からは何のエラーも表示されないところ。0から調べないといけないため、厳しい。

バージョン?自分の設定ミス?[編集 | hide | hide all]

では変換を担うプログラムに目をつける。phpのGD拡張。しかし異常なし。
ひとまずMWのみ1.35.6にバージョンを落として新規インストールし、様子を見る。バージョンを落とせば、正しく生成される。しかしこのまま1.38にアップデートすると、またできなくなる。ただし、既に生成されたサムネは消えない。

原因[編集 | hide]

視点を変えれば、PNGとJPGの違いが絡んでいる、と考えられる。JPGに(よく)あるもの、PNGに(あまり)ないもの、といえばexifになろうか。

といことで、探したら、あったあった報告されていた

右端が1.35でアップロード、中央が1.38で生成不良、左がexif問題を解決し成功したもの。
(利用者名 上画像Zzz この画像Nsk は共に適当)

exifの表示にphpのexif拡張が必要になるものの、それが周知されていなかったというお話。拡張が無い状態ではメタデータを読み込めず、0x0pxの画像と誤認識し、サムネイルを正常に生成できないでいた(作成しようとしなかった)らしい。

解決策[編集 | hide]

つまりexifを表示する設定を消せば、発生は避けられる。exifをなかったことにすればMediaWikiは今まで通り普通に画像を認識してサムネイルを作るようになる。次のマイナーバージョンではデフォルトでexif非表示になる模様

逆にexifをこれまで通り表示させたい場合は、php.iniで拡張機能を有効化するだけでよい。

A) LocalSettings.phpをいじる(exif不要)
$wgShowEXIF = false;
B) php.iniをいじる(exif必要)

以下の2行を追加。既に存在していれば、コロンを外す。

extension=extensions/php_mbstring.dll
extension=extensions/php_exif.dll

ということで解決。3日費やした。

その後[編集 | hide]

1.38.2で修正☑