サーバーの管理画面や業者から「PHPのバージョンを上げました」と言われて、サイトを開いてみたら普段どおり表示されていた。それで一安心、という流れはよくあります。
ところが、上げてから何か月もたったある日、突然ページが表示されなくなることがあります。原因は、その日に初めて通った道にありました。
ある日、何も選ばずに保存した記事で止まった
ある会社のサイトで実際に起きたことです。サーバーのPHPはすでに8系に上がっていて、長いあいだ何ごともなく動いていました。
ある日、担当の方が試しに記事を1本、分類の欄を何も選ばずに保存しました。すると、その記事のページがエラーで表示されなくなりました。さらにトップページのお知らせ欄には、サーバーの中のファイルの置き場所が書かれた警告文が、記事の題名のように並びました。
調べると、同じ原因の不具合が3か所に眠っていました。
なぜ今まで動いていたのか
サイトの見た目を作っているプログラム(テーマ)が、「欄には必ず何か入っている」前提で書かれていました。空のときにどうするかが書かれていなかったのです。
それでも動いていた理由は2つあります。
1つは、それまでの記事がすべて、欄をきちんと埋めて作られていたこと。空の記事が一度も無かったので、問題の箇所は一度も実行されていませんでした。
もう1つは、PHPの古い版(7まで)では、この種の書き方は「注意」を出すだけで表示は続けてくれたこと。PHP 8からは、同じ書き方が「そこで止める」扱いに変わりました。
つまり、PHPを上げた日にはまだ何も壊れていません。壊れる条件が揃うのを待つ状態になっただけです。
止まりやすいのは「いつもと違うこと」をした日
引き金になるのは、いつもと違う入力と、これまで通ったことのない道が重なった瞬間です。たとえば次のようなときです。
- 担当者が変わって、入力のくせが変わった
- 急いでいて、欄を埋めずに下書き保存した
- これまで使っていなかった投稿の種類を使い始めた
- PHPをさらに新しい版へ上げた
どれも運用の中で普通に起こることです。そしてたいてい、急いでいる日に起こります。
自分でできる確かめ方
管理画面に入れる方なら、次の2つで様子が分かります。
1つ目は、いまのPHPの版を知ることです。管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」を開くと、PHPのバージョンが書かれています。8で始まっていれば、この記事の話が当てはまります。
2つ目は、欄を空けたままの下書きを1本作って、プレビューで表示してみることです。カテゴリーやアイキャッチ画像、独自の入力欄を何も入れずに保存し、公開はせずにプレビューだけ見ます。エラーの文字が出たり、画面が真っ白になったりしたら、同じ種類の不具合が眠っています。確かめ終わったら、その下書きは削除してください。
ただし、これで分かるのは一部だけです。トップページや一覧のように、プレビューでは通らない場所もあります。何も出なくても「全部大丈夫」とまでは言えません。
管理している人にこう頼む
サイトを作った会社や、保守を頼んでいる人がいるなら、次の文をそのまま送ってください。
サーバーのPHPが8系になっていると思います。テーマや独自に作った部分に、入力欄が空のときにエラーで止まる書き方が残っていないか、一度点検をお願いできますか。担当が変わったり、欄を埋めずに保存したりしたときに止まるのを避けたいです。
頼まれた側は、プログラム全体を道具で調べれば、危ない箇所を数で答えられます。「何か所あって、何か所直した」という返事が返ってくれば十分です。
まとめ
PHPを上げた直後に何も起きないのは、壊れていないからではなく、まだ誰もその道を通っていないからかもしれません。いつもと違う保存をした日に止まる前に、一度だけ確かめておくと安心です。

