ブログ/2022-06-27 1.38においてjpegのサムネイル生成が行われない件
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では生成されない。

nginx初使用だったのでその辺に起因するのかと調べるも、サーバーのアップロード設定、phpの制限、MWの制限いずれも問題なし。画像を切り抜いたりしても変わらず。
怖いのはMW側からは何のエラーも表示されないところ。0から調べないといけないため、厳しい。
バージョン?自分の設定ミス?[編集 | hide | hide all]
では変換を担うプログラムに目をつける。phpのGD拡張。しかし異常なし。
ひとまずMWのみ1.35.6にバージョンを落として新規インストールし、様子を見る。バージョンを落とせば、正しく生成される。しかしこのまま1.38にアップデートすると、またできなくなる。ただし、既に生成されたサムネは消えない。
原因[編集 | hide]
視点を変えれば、PNGとJPGの違いが絡んでいる、と考えられる。JPGに(よく)あるもの、PNGに(あまり)ないもの、といえばexifになろうか。
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日費やした。