PHPでAPCを有効にするとclass not foundになる現象

最近はLINEスタンプのネタばかりだったので、久々の技術ネタです。
4年ほど前に作ったシステム(ソーシャルゲーム)を訳あってAWS環境で再構築したところ、APCを有効にするとそれまで普通に動いていたシステムが”Fatal error: Class ‘xxxx’ not found in 〜〜〜”とエラーになってしまう事象にはまりました。
classを定義しているファイルは正常に読み込みされているのに、なぜclass not foundなのかと途方に暮れていた所、幾つかの記事をみつけました。
セッションデータの保持をmemcachedを使うように作られていたシステムなのですが、事象を調べていくと、セッション周りの仕様がphp5.2.10から変わったようで以下の設定を入れてあげることで正常動作するようになりました。

register_shutdown_function('session_write_close');

PHPのマニュアルを見てみる

警告

オブジェクトをセッション保存ハンドラとして使うときには、 シャットダウン関数を PHP に登録しておくことが重要です。 これで、PHP スクリプトの終了時に内部的にオブジェクトを破棄する処理による副作用や、 write および close がコールされてしまうことを防げます。 一般的には、'session_write_close'register_shutdown_function() 関数で登録しなければなりません。

まさに記載の通りで、内部的にオブジェクトが破棄された後にセッションデータを保存する為のclassを呼び出している事になっている様で、その為にclass not foundになってしまうと。

参考サイト

ロードバランサを用いた時にPHPでセッション管理する時の注意点
PHP+APC3.1でAPCをonにするとSESSIONへの書き込みが出来ない不具合