web-dev-qa-db-ja.com

symfonyは、session.gc_probabilityが0に設定されている場合でも、Ubuntu 14.04でPHPガベージコレクターを呼び出します

何らかの理由でタイトルの状態として、私のSymfony 2.5アプリケーションは、すべてのphp.iniファイルに以下が含まれている場合でも、PHPガベージコレクターを呼び出しています。

session.gc_probability = 0

誰もこれを防ぐ方法を知っていますか?

エラーメッセージim getting:

Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/lib/php5)
failed: Permission denied (13) in /<path-to-my-site>/var/cache/dev/classes.php line 432 

PHPINFO()から:

Directive               Local Value   Master Value
session.gc_divisor      1000          1000
session.gc_maxlifetime  86400         86400
session.gc_probability  0             0

私は、www-dataユーザーに/var/lib/php5フォルダまたはsession.save_pathどこかにwww-dataユーザーは既にアクセスできますが、無効にする必要があるときにこのプロセスが呼び出される理由を知りたいです。

44
Chase

私はそれを見つけました、app_dev.phpを使用するとき、symfonyの最新バージョンはデフォルトでこれを上書きしていると思います。 Symfony FrameworkBundleはsession.gc_probability = 1を設定しています。

Symfony 3現在

ただし、一部のオペレーティングシステムは独自のセッション処理を行い、session.gc_probability変数を0に設定してPHPガベージコレクションを実行します。Symfonyはこの値を1に上書きするようになりました。

Php.iniで設定された元の値を使用する場合は、次の構成を追加します。

# config.yml
framework:
    session:
        gc_probability: null

https://symfony.com/doc/current/components/http_foundation/session_configuration.html#configuring-garbage-collection

以前の2.xバージョン

これを変更するには、次をconfig.ymlに追加します

framework:
    session:
        gc_probability: 0

次に、devキャッシュをクリアします

php app/console cache:clear

これは、gc_probabilityがデフォルトで1になっていることを示しています。なぜphp.iniの設定を読んでいないのかわからない。

http://symfony.com/doc/2.5/reference/configuration/framework.html#gc-probability

70
Chase

セッションのパスを手動で設定できます。 sessionsディレクトリのSymfony doc を参照してください。

# app/config/config.yml
framework:
    session:
        handler_id: session.handler.native_file
        save_path: '%kernel.root_dir%/sessions'
4
soundlake