Файлы Laravel Session, которые не очищаются из папки framework / session

Я нахожусь на общем хосте (OVH pro), используя Laravel 5.2 для производства (PHP 7.0.5).

Я использую драйвер сеанса файлов , и все работает нормально на моем предыдущем хосте (с тем же приложением), но так как я перешел в OVH, файлы сеансов продолжают создаваться и никогда не удаляются сборкой мусора PHP. Я должен вручную стереть файлы ( более 5000 файлов создаются в день ).

Мой файл config/session.php настроен правильно:

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

И мои storage папок, storage/framework , storage/framework/sessions все установлены с разрешением 0755.

Я также переопределяю php.ini , разместив эти 2 строки в верхней части config/session.php

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

Кажется, что он отлично работает с тем, что возвращает phpinfo() : Информация о сессиях PHP

Я связался с моим хозяином, но они сказали мне, что это должно быть связано с моим приложением Laravel, и они не могут помочь.

Изменить: мои сеансы работают нормально, я имею в виду, что для каждого посетителя создается только один файл. Проблема заключается только в том, что файлы сеанса не очищаются даже с разрешением 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], 

EDIT: Особенности размещения в OVH: я использую multisites в OVH, а папки, содержащие каждый сайт, размещаются на пути моего хоста OVH, а не в папке www по умолчанию.

Я сделал это по соображениям безопасности, потому что папка www общедоступна через mynickname.cluster005.ovh.net и я не хочу, чтобы любой из моих сайтов был общедоступным из

mynickname.cluster005.ovh.net/site1

mynickname.cluster005.ovh.net/site2

( www\site1 , www\site2 …).

Поэтому я думал, что, возможно, только файлы, расположенные внутри www папки, доступны для записи, а может быть, и не снаружи (у корня)? Это объясняет, пока мои файлы не удаляются. Сегодня вечером я проведу тест, чтобы узнать, удаляются ли файлы при размещении в www\site1\storage\sessions .

Solutions Collecting From Web of "Файлы Laravel Session, которые не очищаются из папки framework / session"

Там есть какой-то шаг, который вы можете найти, в чем проблема.

  1. Убедитесь, что идентификатор сеанса фиксирован на каждой странице (идентификатор эхо-сеанса)

если идентификатор сеанса был изменен на каждой странице, вам необходимо проверить правильность настройки домена конфигурации сеанса.

если идентификатор сеанса не изменился, возможно, вам необходимо изменить папку хранения данных на 777.

Надеюсь, это поможет вам.

Если вы используете haproxy , рассмотрите этот ответ:

Файлы сеанса могут быть созданы с помощью haproxy's http health checks .

  1. Проверьте журналы доступа к Интернету на фиксированный интервал доступа.

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

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

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

  1. Обновите option httpchk GET / чтобы указать на некоторые routes которые вы могли бы установить для драйвера сеанса как array на вашем haproxy.cfg .

  2. добавьте Config::set('session.driver', 'array'); чтобы отключить создание файлов сеанса.


Справка: