Debianがphpの組み込みガベージコレクターを使用する代わりに、cronジョブでphpセッションをクリーンアップするのはなぜですか?


26

Debianおよび派生物(Ubuntu)は、PHPセッションガベージコレクターを使用しません

session.gc_probability = 0

代わりに、cron /etc/cron.d/php5を使用します

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Debianがこれを選択した理由は何ですか?

回答:


29

Debianは/var/lib/php5PHPセッションのハイジャックを防ぐために(1733、所有者ルート、グループルート)に非常に厳しい許可を設定しているためです。残念ながら、これにより、セッションファイルが表示されないため、ネイティブPHPセッションガベージコレクターが機能しなくなります。cronジョブはルートとして実行され、セッションファイルを表示してクリーンアップするための十分なアクセス権があります。

編集:ドキュメントのサポート:動作は、バグ#267720に対応して確立されました。(これについては、ストックphp.iniファイルに以前はコメントがありましたが、現在wheezyベースのPHPインストールでは表示されません。)


/ var / lib / php5のpermsはdrwx-wx-wt(rooot-root)であるため、apacheユーザーはdirの内容(スティッキービット)を書き込むことができますが、読み取ることはできません。だから、私はPHPのガベージコレクタがセッションファイルのatimeを評価できないため、削除するファイルを選択できないことを理解しています...正しいですか?
-nulll

それは正解です。
アスキフィル

5

トラフィックの少ないサイトではもう少し信頼性が高くなる可能性があります(1日に数百件しかヒットせず、GCが1,000回ごとに起動するだけの場合、セッションは本来よりも長く続く可能性があります)。多くのセッションがある場合は、ネイティブGCよりもサーバーの負荷が少なくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.