Я нахожусь на общем хосте (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, помещая эти две строки вверху файла 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],
EDIT: особенности хостинга 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
.
lifetime
иlottery
и не столкнулся с проблемой. На OVH не пробовал, так как у меня там уже что-то установлено. Но я могу уделить минутку завтра, чтобы настроить новый сайт для проверки с той же конфигурацией, что и у вас. Это действительно похоже на проблему с правами доступа, но вы уже пробовали много конфигураций... - person Arcesilas   schedule 10.05.2016'expire_on_close'
сfalse
наtrue
, и теперь кажется, что количество файлов сеанса уменьшается очень медленно (~ 2 файла меньше в час, всего 2000), но, по крайней мере, оно уменьшается, поэтому файлы действительно удаляются, что означает, что это в конце концов, это не проблема разрешения. Попробую еще поиграться с вариантами сеанса, пока не найду что-то подходящее. Но на данный момент кажется, что проблема решена, хотя я до сих пор не уверен, что ее вызвало. - person Phmarc   schedule 10.05.2016Illuminate\Session\FileSessionHandler::gc()
). Это не объясняет, почему это происходит, но помогает очистить файлы сеансов, давая вам время выяснить, почему файлы не удаляются сборщиком мусора. - person Arcesilas   schedule 10.05.2016