Nextcloud Deckで画像サムネイルが表示されなくなった不具合の解消方法

👶me:

今回やや回り道したけど、結局deckで画像が表示されなかった原因が何であったかを最初に書いて、そのあと何をどうしたから直ったかコード込み(rocky10,php8.4.17,エディタはvi)でまとめて。

🤖ChatGPT:

了解です。
最初に原因を一文で断定 → 次に修正内容を時系列+コード付きでまとめます。
(Rocky Linux 10 / PHP 8.4.17 / エディタ vi 前提)


結論(原因)

Nextcloud の enabledPreviewProviders が動画系(mp4 等)のみに制限されており、 画像系(JPEG / PNG)の PreviewProvider が無効化されていたことが原因。

そのため

  • mp4 のサムネイルは表示される
  • png / jpg は表示されない
    という一見不思議な状態になっていた。

imagick の有無は 直接の原因ではなかった
(ただし最終的に imagick を入れたのは正解)。


環境

  • OS: Rocky Linux 10
  • PHP: 8.4.17(Remi)
  • Nextcloud: 現行版
  • Web: Apache + php-fpm
  • エディタ: vi

事象の確認(治療前)

bash

`sudo -u apache php occ config:system:get enabledPreviewProviders`

出力:

text

OC\Preview\Movie
OC\Preview\MP4
OC\Preview\AVI
OC\Preview\MKV
OC\Preview\WebM
OC\Preview\MOV

👉 画像系(JPEG / PNG)が存在しない


対応内容(何をどうしたか)

① config.php を vi で編集

bash

sudo -u apache vi config/config.php

enabledPreviewProviders を「動画のみ」→「画像+動画」に修正

(既存の配列は 追記ではなく置き換え

php

'enable_previews' => true,'enabledPreviewProviders' => [
    // 画像
    'OC\Preview\PNG',
    'OC\Preview\JPEG',
    'OC\Preview\GIF',
    'OC\Preview\BMP',
    'OC\Preview\XBitmap',
    // 動画
    'OC\Preview\Movie',
    'OC\Preview\MP4',
    'OC\Preview\AVI',
    'OC\Preview\MKV',
    'OC\Preview\WebM',
    'OC\Preview\MOV',
    // 軽量系
    'OC\Preview\TXT',
    'OC\Preview\MarkDown',
],

保存して終了:

text

Esc
:wq
Enter

② 既存の壊れたプレビューキャッシュを削除

※ Nextcloud の仕様上 preview:clear は存在しない

bash

`sudo -u apache php occ preview:cleanup`

③ PHP / Apache 再起動

bash

sudo systemctl restart php-fpmsudo systemctl restart httpd

④ 確認

bash

sudo -u apache php occ config:system:get enabledPreviewProviders

ここに以下が含まれていれば OK:

text

OC\Preview\PNG
OC\Preview\JPEG`

⑤ ブラウザで確認

  • Files アプリで png / jpg を表示 → サムネイル表示
  • Deck のカード内画像 → 正常表示

imagick について(回り道に見えた部分の整理)

  • imagick が無くても PreviewProvider が有効なら GD で表示される
  • 今回は Provider が無効だったため、imagick を入れても最初は改善しなかった
  • ただし最終状態としては:
bash

php -m | grep imagickimagick

👉 Nextcloud 的には推奨構成
👉 無駄にはなっていない


まとめ(要点だけ)

  • 原因
    → enabledPreviewProviders が動画系のみに制限されていた
  • なぜ mp4 だけ見えたか
    → 動画と画像は別 PreviewProvider
  • 直し方
    → config.php で画像系 PreviewProvider を明示的に有効化
    → キャッシュ削除 → 再起動
  • 環境は壊れていない
    → PHP 本体は一切入れ替わっていない

🗂  K.サーバ/nextcloud

🏷