2

私は、本番環境(PHP 7.0.5)でLaravel 5.2を使用する共有ホスト(OVHプロ)を使用しています。

ファイル セッション ドライバーを使用しており、以前のホスト (同じアプリ) ではすべて正常に動作していましたが、OVH に移行してから、セッション ファイルが作成され続け、PHP ガベージ コレクションによって削除されることはありません。ファイルを手動で消去する必要があります ( 1 日あたり 5000 以上のファイルが作成されます)。

私のconfig/session.phpファイルは正しく設定されています:

'driver' => 'file',
'lifetime' => 120,
'lottery' => [2, 100],

そして、私のフォルダ、、storageはすべて 0755 パーミッションで設定されています。storage/frameworkstorage/framework/sessions

また、これらの 2 行を先頭に配置して、 php.iniをオーバーライドします。config/session.php

ini_set('session.gc_probability', '5');
ini_set('session.gc_divisor', '100');

phpinfo()返さ れるものからうまく機能しているようです:PHP セッション情報

ホストに連絡しましたが、Laravel アプリに関係しているとのことで、どうすることもできません。

編集:私のセッションは正常に動作します。つまり、訪問者ごとに作成されるファイルは 1 つだけです。問題は、777 パーミッションがあっても、セッション ファイルがクリーンアップされないという事実だけです。


Laravel セッションの宝くじを 100/100 に設定しても、ファイルはまだ削除されません。

    /*
    |--------------------------------------------------------------------------
    | Session Sweeping Lottery
    |--------------------------------------------------------------------------
    |
    | Some session drivers must manually sweep their storage location to get
    | rid of old sessions from storage. Here are the chances that it will
    | happen on a given request. By default, the odds are 2 out of 100.
    |
    */

    'lottery' => [100, 100],

編集: OVH ホスティングの詳細: OVH でマルチサイトを使用しており、各サイトを含むフォルダーは、既定のwwwフォルダーではなく、OVH ホストのルートに配置されています。

セキュリティ上の理由から、wwwフォルダーは公開されてmynickname.cluster005.ovh.netおり、自分のサイトを公開したくないためです。

mynickname.cluster005.ovh.net/site1

mynickname.cluster005.ovh.net/site2...

( www\site1www\site2...)。

だから、wwwフォルダ内にあるファイルだけが書き込み可能で、外側(ルート)のファイルではないのではないかと考えていましたか? 私のファイルが削除されていない間、それは説明するでしょう。に配置したときにファイルが削除されるかどうかを今夜テストしますwww\site1\storage\sessions

4

3 に答える 3

0

最初に何が問題なのかを見つけることができるいくつかのステップがあります

  1. すべてのページでセッション ID が固定されていることを確認します (エコー セッション ID)。

セッション ID がページごとに変更された場合は、セッション構成ドメインの設定が正しいことを確認する必要があります。

セッション ID が変更されていない場合は、ストレージ フォルダーの前提条件を 777 に変更する必要があるかもしれません。

お役に立てば幸いです。

于 2016-05-06T01:47:27.537 に答える
0

を使用している場合はhaproxy、次の回答を検討してください。

セッション ファイルは、 によって作成される場合がありますhaproxy's http health checks

  1. 一定間隔アクセスのWebアクセスログを確認してください。

111.11.111.1 - - [2016/07/28:10:40:30 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"

111.11.111.1 - - [2016/07/28:10:40:32 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"

111.11.111.1 - - [2016/07/28:10:40:34 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"

  1. にセッション ドライバを設定できることoption httpchk GET /を指摘するように更新します。routesarrayhaproxy.cfg

  2. Config::set('session.driver', 'array');セッションファイルの作成を無効にする行を追加します。


参照:

于 2016-07-28T14:52:08.480 に答える