CentreSource 的技術員 Chris Wage 寫了一篇文章,以偵探故事的形式描述他如何解決一個 PHP Session 生命週期的臭蟲。
「案件現場」:一台 Apache server,裝置了數個 virtual hosts,每一個 virtual host 都運行數個開放源碼的 PHP 應用程式。
「案情」:約兩星期前開始,系統內其中兩個運行已久的應用程式的 Sessions 無故提早結束,在這段時間系統中與 Session 相關的設定都沒有被改動。
作者開始解釋了一下 PHP 內置的 Session 管理機制,也解釋了 php.ini 內的 session.save_path、session.gc_maxlifetime、掃除過時的 Session files 的機制,然後開始他的偵查行動。
經過很多嘗試和檢查後,終於找到元兇,作者在最後還解釋了他的解決辦法。