何が起きているのか
WordPressのアップデート(コア、プラグイン、テーマを問わず)は、サイトのルートディレクトリに.maintenanceという隠しファイルを作成することから始まります。このファイルが存在する間、WordPressは訪問者に対して、途中更新された壊れかけのサイトではなく、保留ページを表示します。
通常の状態では、アップデートが完了した瞬間にWordPressが.maintenanceを削除します。しかし、アップデートがタイムアウトしたり、途中で失敗したり、ブラウザタブを早めに閉じてしまうと、ファイルが残り続けます。サイトはこの状態で止まってしまいます:
Briefly unavailable for scheduled maintenance. Check back in a minute.
解決策はそのファイルを削除するだけです。それ以上でも以下でもありません。
修正方法1:FTP/SFTPで.maintenanceを削除する(最速)
FTPクライアント(FileZilla、Cyberduck、Transmitなど)を開いてサーバーに接続します。wp-config.phpが置かれているフォルダと同じ、WordPressのルートディレクトリに移動します。
隠しファイルはデフォルトで非表示になっています。まず表示設定を変更してください:
- FileZilla:サーバー → 隠しファイルを強制表示
- Cyberduck:表示 → 隠しファイルを表示
.maintenanceファイルが見えるはずです。削除してサイトをリロードすると、すぐに元に戻ります。
修正方法2:SSHで削除する
# WordPressのルートディレクトリに移動
cd /var/www/html
# (サーバーの設定に合わせてパスを変更してください)
# ファイルが存在することを確認
ls -la | grep maintenance
# 削除する
rm .maintenance
削除されたことを確認します:
ls -la | grep maintenance
# 出力がなければ完了です
修正方法3:cPanelのファイルマネージャーで削除する
- cPanelにログインし、ファイルマネージャーを開く
- WordPressのルートディレクトリ(通常は
public_html)に移動する - 設定(右上)をクリック → 隠しファイルを表示にチェック → 保存
.maintenanceを見つけて右クリック → 削除
修正方法4:WP-CLIを使う
WP-CLIが使える環境なら、コマンド一つで解決できます:
wp maintenance-mode deactivate
このコマンドは.maintenanceを削除するだけでなく、他のメカニズムによるメンテナンスモードも確認してくれます。手動削除より確実な方法です。
ファイルが存在しないのにエラーが続く場合は?
深く調査する前に、以下の3つの原因を確認してください。
キャッシュが古いメンテナンスページを配信している
Cloudflare、WP Rocket、W3 Total Cache、そしてほとんどのホスティングレベルのキャッシュは、ファイルを削除した後でも全訪問者にメンテナンスページを配信し続けることがあります。すべてをパージしてください:
- Cloudflare:ダッシュボード → キャッシング → すべてパージ
- WP Rocket:ダッシュボード → キャッシュをクリア
- 簡単なテスト:URLの末尾に
?nocache=1を付けてキャッシュをバイパスし、サイトの実際の状態を確認する
プラグインがメンテナンスモードを強制している
SeedProd、WP Maintenance Mode、Coming Soon Pageなどのプラグインは、.maintenanceファイルとは完全に独立した独自のメンテナンス設定を持っています。/wp-adminにアクセスできる場合は、それらのプラグイン設定を確認してメンテナンスモードをオフにしてください。
wp-adminもブロックされている場合は、wp-config.phpに以下の行を一時的に追加します:
define('WP_MAINTENANCE', false);
これによりプラグインベースのメンテナンスモードをバイパスして管理画面に戻れます。プラグインの設定を修正したら、この行を削除してください。
不完全なアップデートで壊れた状態が残っている
.maintenanceを削除したら、wp-admin → ダッシュボード → 更新に移動して、失敗した項目を手動で再実行してください。同じアップデートが繰り返し失敗する場合は、PHPのタイムアウトかメモリ制限に引っかかっている可能性があります。wp-config.phpでデバッグログを有効にしてください:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
その後wp-content/debug.logを確認すると、実際のエラーが記録されています。
確認手順
- プライベート/シークレットウィンドウでサイトを開く(ブラウザキャッシュをスキップ)
- ホームページが正常に表示されることを確認する
/wp-adminにログインし、保留中のアップデートが完了しているか、再実行待ちになっているかを確認する- SSHまたはFTPで、WordPressルートに
.maintenanceが存在しないことを再確認する
再発防止策
孤立した.maintenanceファイルは、ほぼ必ず大規模なアップデート中のPHPタイムアウトが原因です。以下の習慣を身につけることで問題を防げます:
max_execution_timeを最低300秒に引き上げる。.htaccessの場合:php_value max_execution_time 300。php.iniの場合:max_execution_time = 300。- プラグインは一つずつ更新する。「すべて更新」は一つのブラウザリクエスト内で順番に実行されるため、一つの重いプラグインがバッチ全体をタイムアウトさせる可能性がある。
- 大規模サイトでの一括更新にはWP-CLIまたはMainWPを使用する。ブラウザベースの更新機能よりもタイムアウトへの対応がはるかに優れている。
- 例外なく、すべてのアップデート前にバックアップを取る。UpdraftPlusとBackWPupはどちらもワンクリックでアップデート前のスナップショットを作成できる。

