サーバーにアップロードしたPHPの更新が反映されないことがしばしば起こるようになりました。数年間まったく問題なかったのにある日突然反映されないことが起き始めました。症状としては、ちょっとしたログの追加や分岐の追加のような小さい変更だと反映されず、構造が変化するような大きな変更を入れると反映されるといった感じです。
結論としては、opcache が原因のようでした。ひとまず、以下を php ファイルに設定したところ反映されるようになりました。
ini_set('opcache.enable', 0);
しかし、サーバー側の php.ini には特に opcache に関する設定の記載がありませんでした。opacache.enable はデフォルトで有効であるため、今までも有効だったはず。もしかしたら、キャッシュ無効化判定ロジックが変わったことにより、変更内容によってはキャッシュが無効化されなくなってしまったのかもしれません。
ちょうどサーバー側のPHPバージョンが7から8にアップグレードした時からこの症状が発生したような気がします。PHP8以降は opcache.jit というJITコンパイル設定が追加されています。
PHPのJITについては以下のページが分かりやすかったです。
https://qiita.com/taisei_otsuka/items/aa8a1cbac8e05a86e233
もしかしたら、これがキャッシュ無効の判定ロジックに影響している可能性があります。試していませんが、opcache.jit の値を変更すれば(もしくは無効化すれば)、opcache.enable が 1 であっても反映されるようになるかもしれません。
ひとまず、PHP の変更が反映されないときは、opcache を疑ってみるといいということを学びました。