Я нахожусь на общем хосте (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()
возвращает:
Я связался со своим хозяином, но они сказали мне, что это должно быть связано с моим приложением 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],
РЕДАКТИРОВАТЬ: Особенности хостинга OVH:
Я использую мультисайты в 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
,
Там какой-то шаг, который вы можете найти, что проблема в первую очередь
если идентификатор сессии был изменен на каждой странице, вам нужно проверить конфигурацию сессии
настройка домена правильная.
если идентификатор сессии не изменился, возможно, вам нужно изменить расположение папки хранения на 777.
Я надеюсь, что это может помочь вам.
Если вы используете haproxy
рассмотреть этот ответ:
Файлы сессий могут быть созданы haproxy's http health checks
,
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 «-» «-» «-«
Обновить option httpchk GET /
указать на некоторые routes
что вы можете установить драйвер сеанса array
на ваше haproxy.cfg
,
добавить Config::set('session.driver', 'array');
строка для отключения создания файлов сессий.
Ссылка: