2026年10月21日の日本時間23時ごろ、PHPの開発チームが重大な脆弱性2件の修正版を公開しました。公式の発表は、完全な緩和策はなく、更新だけが安全な選択だとしています。私たちは、保守契約をいただいているお客様のPHPシステム5件の作業に、その直後から入りました。
保守契約というと、障害が起きたときの窓口だと思われがちです。この夜に実際にあったのは、こういうことでした。
最初にしたのは、お客様の担当者に停止する時間帯をお伝えすることと、サイトにメンテナンス画面を出すことです。この画面は、アプリケーションの中ではなく、Webサーバーやロードバランサーから静的なHTMLとして返しました。アプリのメンテナンスモードは、PHPが動いたうえで画面を出す仕組みです。今回の脆弱性はPHPが動く前に攻撃が成立する例が示されていたので、リクエストがPHPに届かない場所で止める必要がありました。
次に、システムごとの構成を洗い出しました。OS、Webサーバー、PHPとのつなぎ方、パッケージの入手元、Dockerを使っているかどうか。同じPHPでも、構成によって更新の手順が変わります。動いているPHPのバージョンも、コマンドラインの表示だけでなく、Webで動いているものを確かめました。
そこから修正済みのパッケージ、または作り直したイメージへ入れ替え、PHP-FPMやApacheを再起動して、すべてのワーカーを新しくしました。ここまでのPHPの更新は、約1時間で終えています。
時間がかかったのは、そのあとです。PHPのバージョンを上げると、プロジェクトが使っているライブラリの中に、新しいバージョンでは動かないものが出ることがあります。どのライブラリのどのバージョンが影響を受けうるかを洗い出し、プロジェクト全体をテストし直しました。ログイン、検索、アップロード、決済など、お客様の業務で止まると困る操作は、手でも確かめています。更新前後の拡張モジュールの一覧を比べ、エラーログに新しい警告が出ていないかも見ました。更新そのものより、この確認のほうに長い時間を使っています。
テストが済んだらメンテナンス画面を外し、その後もエラーログとアクセスの状況を見続け、お客様に完了をご報告しました。
保守契約の価値は、緊急の日に何が起きるかで見えてくると考えています。ただ、この記事に書いたのは私たちの作業の順番であり、同じ時間で終わることをお約束するものではありません。
お使いのシステムで、緊急の修正が出た日に誰がどの順番で動くかは、決まっていますか。よければコメントで教えてください。