PHP5.2.8 にバージョンアップしたら、 Mojavi3 で警告が出るようになりました。
Warning: fclose() [function.fclose]: 37 is not a valid stream resource in \path\to\mojavi\config\ConfigCache.class.php on line 408
今回はこれを抑制する方法。
コードを見てみると、mojavi\config\ConfigCache.class.phpでopendir()で取得したハンドルをfclose()で閉じようとしているのが原因だったので、fclose()をclosedir()に修正するだけでOKです。Sean Kerr 氏の凡ミス?
修正箇所その1
// close file pointer fclose($fp);
↓
// close file pointer closedir($fp);
修正箇所その2
// close file pointer fclose($fp);
↓
// close file pointer closedir($fp);
キャッシュファイルの生成時と消去時とで関数が異なるため、修正箇所は2箇所になりますが、どちらも直しておけば問題ないです。手元の環境ではPHP5.2.6までは問題なく動作してましたが、PHP5.2.8にバージョンアップしたとたんにWarningを吐くようになりました(コチラの方が動作としては正しい)。
Mojavi3で動いてるシステムはまだあると思いますが、PHPをバージョンアップしたらフレームワーク内からWarningが出た、という時は参考にしてみるといいかもです。
ああ、いっそsymfonyでリプレースしたいなぁ...