WP_AUTO_UPDATE_COREを設定してもWordPressが自動更新されないときに確認したこと

WP_AUTO_UPDATE_COREを設定してもWordPressが自動更新されないときに確認したこと

EC2上のWordPressサーバーで自動更新が機能していないという問題に直面しました。wp-cron.phpへのリクエストが404で失敗し続けていた原因を特定し、対応するまでの切り分けの流れをまとめます。
2026.07.23

はじめに

かつまたです。

EC2 上の複数の WordPress サーバー(Bitnami の WordPress AMI で構築)に対してセキュリティ更新の適用状況を確認していたところ、自動更新を有効にしているにもかかわらず、1 台だけマイナーバージョンが更新されていないサーバーがありました。

wp-config.php の設定・ファイル権限はすべて正常に見える状態から切り分けを進めた結果、原因は NGINX の root 設定と WordPress の設置ディレクトリの不一致でした。本記事では切り分けの流れと対応をまとめます。

事象

対象サーバーは wp-config.php でマイナーバージョンの自動更新を有効にしていました。

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

しかし、マイナーバージョンの更新が提供されているのに適用されておらず、同一構成・同一設定の別サーバーでは自動更新が完了していました。

wp-cron のイベントがすべて期限切れになっていた

自動更新は wp-cron のイベントとして実行されるため、まず wp-cli でイベントの状態を確認しました。Bitnami 構成では wp-cli の実行に sudo が必要です。

$ sudo wp cron event list --path=/opt/bitnami/wordpress
+------------------+---------------------+-------------------+------------+
| hook             | next_run_gmt        | next_run_relative | recurrence |
+------------------+---------------------+-------------------+------------+
| wp_version_check | 2026-XX-XX XX:XX:XX | now               | 12 hours   |
| wp_update_plugins| 2026-XX-XX XX:XX:XX | now               | 12 hours   |
| wp_update_themes | 2026-XX-XX XX:XX:XX | now               | 12 hours   |
+------------------+---------------------+-------------------+------------+

すべてのイベントの next_run_relativenow、つまり実行予定時刻を過ぎたまま一度も実行されていない状態でした。

wp-cron.php への POST が 404 を返していた

wp-cron はサイトへのアクセスを契機に、WordPress が自サイトの /wp-cron.php へループバックの POST リクエストを送ることで発火します。NGINX のアクセスログを確認すると、このリクエストが 404 で失敗し続けていました。

$ sudo grep wp-cron.php /opt/bitnami/nginx/logs/access.log | tail -n 3
127.0.0.1 - - [XX/Xxx/2026:XX:XX:XX +0000] "POST /wp-cron.php?doing_wp_cron=XXXXXXXXXX HTTP/1.1" 404 ...

つまり、イベントは登録されているが、wp-cron の実行リクエスト自体がサーバーに拒否されている状態です。

原因

NGINX の server ブロックの root が、WordPress の設置ディレクトリではなく別のディレクトリを向いていました。

$ sudo grep -r "root " /opt/bitnami/nginx/conf/server_blocks/
/opt/bitnami/nginx/conf/server_blocks/example-server-block.conf:  root /opt/bitnami/static-site;
  • NGINX の root: /opt/bitnami/static-site(サーバー構築初期に静的サイトを配信していたディレクトリ)
  • WordPress の設置先: /opt/bitnami/wordpress(wp-cron.php はこちらに存在)

サーバー構築と WordPress の設置が別のタイミング・別の担当で行われた環境で、構築時点の用途に合わせた root 設定がそのまま残っていた、という経緯です。

このため /wp-cron.php へのリクエストが WordPress に到達せず 404 となり、WordPress の自動更新チェーンが起点で止まっていました。

  1. wp-cron が発火する(/wp-cron.php への POST)← ここで 404 になり停止
  2. wp_version_check が新バージョンを確認する
  3. wp_maybe_auto_update が更新可否を判定し、更新を実行する

対応内容

1. wp-cli で本体を手動更新

通常の変更作業であれば、ステージング環境での動作確認を経て本番へ適用します。ただし今回は次の理由から、ロールバック手段を確保したうえで本番へ直接適用する判断としました。

  • 適用対象が後方互換の保たれるマイナーバージョン更新であること(自動更新で無人適用される範囲であること)
  • セキュリティ更新であり、未適用のまま検証期間を置くこと自体がリスクになること

更新前に EBS スナップショットと DB のバックアップを取得しています。

$ sudo wp db export backup.sql --path=/opt/bitnami/wordpress
$ sudo wp core update --minor --path=/opt/bitnami/wordpress

2. NGINX の root を WordPress 設置ディレクトリへ修正

server ブロックの root を WordPress の設置ディレクトリへ修正し、NGINX を再読み込みしました。

root /opt/bitnami/wordpress;
$ sudo /opt/bitnami/ctlscript.sh restart nginx

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。

運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。

当社は様々な職種でメンバーを募集しています。

「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 採用サイト をぜひご覧ください。

※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事