2026年9月12日
2026年9月12日
WordPressで「exif が無効」と出るときの直し方|PHPのexif拡張の確認と有効化
WordPressの「ツール」→「サイトヘルス」に、exif についての警告が出ることがあります。英語の原文は The optional module, exif, is not installed, or has been disabled. で、日本語の画面では「オプションのモジュール exif がインストールされていないか、無効化されています」という意味の表示になります。
exif は、JPEG画像などに埋め込まれた撮影情報(EXIF)を読むPHPの拡張機能です。WordPressの必須モジュールではないので、無くてもサイトは動きます。ただし、無いと画像の扱いでいくつか困ることがあるため、自分で管理しているサーバーなら有効にしておくのが無難です。
この記事の内容は、WordPress 7.1 のソースコードと、Ubuntu 24.04・AlmaLinux 9 のパッケージで確認したものです(2026年11月時点)。
exif が無いと何が起きるか
WordPressは、PHPの exif_read_data() 関数が使えるときだけ、次の処理を行います。関数が無いときは、エラーにはならず処理を飛ばします。
| 処理 | exif があるとき | exif が無いとき |
|---|---|---|
| 画像の向きの補正(WordPress 5.3 以降) | スマートフォンで縦に撮ったJPEGを、EXIFの向き情報(Orientation)に合わせて回転して保存する | 回転されず、横倒しのまま表示されることがある |
| 撮影情報の保存 | 絞り・カメラ機種・撮影日時・焦点距離・ISO感度・シャッター速度・著作権などをメディアの情報として保存する | これらの値が空になる(IPTCに入っているキャプションなどは別の仕組みで読まれる) |
| アップロードされたファイルの種類の判定 | exif_imagetype() で画像の種類を調べる |
getimagesize() で代わりに調べる |
プラグインやテーマが exif_read_data() を直接呼んでいる場合は、exif が無いと Call to undefined function exif_read_data() という Fatal error で画面が止まることがあります。
手順1:WordPressから見たPHPで exif が有効か確かめる
PHPは、コマンドライン(CLI)用とWebサーバー用で、別の設定ファイルを読んでいることがあります。ターミナルで php -m を実行して exif が表示されても、Webサーバー側では無効のことがあるので、WordPressから見た状態を確かめます。
- 管理画面の「ツール」→「サイトヘルス」の「ステータス」タブで、推奨モジュールが足りないという項目(英語の画面では
One or more recommended modules are missing)を開き、exif が挙がっているかを見ます。 - WP-CLI が使えるなら、次のコマンドでも確かめられます(ただし、これはCLI側のPHPの結果です)。
wp eval 'var_dump( function_exists( "exif_read_data" ) );'
CLI側のPHPに exif が入っているかは、次のコマンドで確かめます。
php -m | grep -i exif
php --ini
php --ini は、CLIのPHPが読んでいる設定ファイルの場所を表示します。Webサーバー側の設定ファイルの場所は、PHP-FPMなら /etc/php/8.3/fpm/ のようにCLIとは別の場所にあります。
手順2:サーバーの種類ごとに有効にする
Ubuntu / Debian
Ubuntu 24.04 では、exif は別のパッケージではなく、PHPの共通パッケージ php8.3-common に含まれています(php-exif という名前の独立したパッケージはありません)。通常はインストールした時点で有効です。無効になっている場合は、誰かが phpdismod で外したと考えられるので、phpenmod で戻します。
# exif の設定ファイルがあるか
ls /etc/php/8.3/mods-available/exif.ini
# 有効にする(すべてのSAPIに対して)
sudo phpenmod exif
# PHP-FPM を使っている場合は再起動
sudo systemctl restart php8.3-fpm
# Apache の mod_php を使っている場合は Apache を再起動
sudo systemctl restart apache2
8.3 の部分は、使っているPHPのバージョンに置き換えます。php -v で確かめられます。
RHEL / AlmaLinux / Rocky Linux
AlmaLinux 9 では、exif は php-common パッケージに含まれ、/etc/php.d/20-exif.ini に extension=exif と書かれて有効になっています。このファイルが無い、または行の先頭に ; が付いて無効になっている場合は、元に戻します。
# exif の設定を確認
cat /etc/php.d/20-exif.ini
# ファイルが無い場合は php-common を入れ直す
sudo dnf reinstall php-common
# PHP-FPM を再起動(RHEL 系の Apache は通常 PHP-FPM 経由で PHP を動かす)
sudo systemctl restart php-fpm
Docker の公式 PHP イメージ
Docker Hub の公式 php イメージには、exif は最初から入っていません。Dockerfile で追加します(公式の wordpress イメージには最初から入っています)。
FROM php:8.3-apache
RUN docker-php-ext-install exif
Windows(IIS や XAMPP など)
Windows版のPHPでは、php.ini の extension=exif の行を有効にします。行の先頭に ; があればそれを消して保存し、IISなら iisreset などでPHPのプロセスを起動し直し、XAMPPならApacheを再起動します。使っている php.ini の場所は、php --ini か phpinfo() の「Loaded Configuration File」で確かめます。
共用レンタルサーバー
共用サーバーでは、PHPの拡張機能を利用者が入れることはできません。コントロールパネルにPHPの拡張機能やPHPのバージョンを選ぶ画面があれば、そこで exif を選べるか確かめます。選べない場合は、サーバー会社に exif を有効にできるか問い合わせます。PHPのバージョンを切り替えると拡張機能の構成が変わることもあるので、切り替えた直後に警告が出た場合はその点も伝えます。
手順3:有効になったか確かめる
- 「ツール」→「サイトヘルス」を開き直し、exif の警告が消えたことを確かめます。
- スマートフォンで縦向きに撮ったJPEG写真を「メディア」→「新規追加」でアップロードし、正しい向きで表示されることを確かめます。
- 撮影情報がメタデータとして保存されたかは、WP-CLIで次のように確認できます(
123は添付ファイルのID。「メディア」で画像を開いたときのURLのitem=の数字です)。
wp post meta get 123 _wp_attachment_metadata --format=json
結果の image_meta に camera や created_timestamp などの値が入っていれば、EXIFが読めています。カメラ情報の無い画像(スクリーンショットなど)では、もともと空です。
なお、exif を有効にする前にアップロードした画像は、自動では読み直されません。向きを直したい画像は、アップロードし直します。
exif と位置情報の扱い
EXIFには、撮影場所のGPS座標が入っていることがあります。PHPの exif は情報を「読む」ための拡張機能なので、無効にしても画像ファイルからEXIFが消えるわけではありません。WordPressはアップロードした元の画像ファイルをそのまま保存するため、位置情報を公開したくない場合は、アップロード前に写真から位置情報を消しておきます。
まとめ
- exif はWordPressの必須モジュールではありませんが、無いと縦向き写真の自動回転や撮影情報の保存が行われません。
- CLIとWebサーバーでPHPの設定が違うことがあるので、サイトヘルスで確認します。
- Ubuntuでは
php8.3-commonに含まれphpenmod exif、AlmaLinuxでは/etc/php.d/20-exif.ini、Dockerの公式PHPイメージではdocker-php-ext-install exifで有効にします。 - 変更後はPHP-FPMかWebサーバーを再起動し、サイトヘルスと画像のアップロードで確かめます。