Время моих сессий PHP истекло, хотя файлы сессий не повреждены - PullRequest
2 голосов
/ 29 августа 2010

Я прочитал десятки решений и попробовал почти каждое из них, но мои сеансы все равно быстро заканчивались.Я использую установку Debian и установил переменную max в / usr / lib / php5 / maxlifetime на 86400. Я также установил session.gc_maxlifetime = 86400 в php.ini.Я сделал сессионный cookie-файл действительным в течение одного часа, и каждый раз, когда я перезагружаю страницу, я обновляю его еще на один час.Я попытался установить ini_set ("session.gc_maxlifetime", "86400");в моем переднем контроллере.Однако ничего не помогает.Если я войду на свой сайт и подожду около 20 минут в следующий раз, когда я нажму на ссылку на странице, я выйду из системы.Файл cookie сеанса все еще действителен, и файл сеанса в / var / lib / php5 все еще существует.Я просто не понимаюЯ должен также упомянуть, что я использую Parallels PLESK в системе, и он внес много изменений в стандартную установку Debian, но я не думаю, что это проблема.Кто-нибудь?

Ответы [ 4 ]

1 голос
/ 30 августа 2010

Вполне возможно, что загружено более одного .ini, и место, в которое вы внесли изменения в сеанс, переопределяется загруженным позже в цепочке. Извлеките phpinfo(), где находятся ваш код проверки сессии / код входа в систему, и посмотрите, каковы настройки сеанса. Часть вывода также будет списком загруженных INI-файлов.

0 голосов
/ 20 сентября 2010

делает php -i |grep session.cookie_lifetime (в консоли) или phpinfo () (в скрипте), чтобы проверить изменение параметра времени жизни файла cookie?

Если вы используете Firefox, попробуйте установить веб-разработчикПанель инструментов и Firebug для проверки файлов cookie и сетевой активности.Это очень полезная комбинация для меня, когда я исследую проблемы, в которых изменяется значение хеш-функции файла cookie сеанса.

Также возможно, что где-то в вашем коде или библиотеках у вас есть вызов session_set_cookie_params () это перегружает ваше ожидаемое поведение.Вы можете проверить куки с любым из расширений выше, чтобы проверить их срок действия.

0 голосов
/ 11 сентября 2010

Я не уверен, поможет ли это, но убедитесь, что вы используете оба метода: ob_start () и session_start ();

ob_start();
session_start();

Это странно, решение может заключаться в реализации функции «Запомнить меня» с cookie. Я знаю, что сессии могут быть очень непостоянными, если вы войдете в систему на другом компе или на том же компе, но в другом браузере, cookie может быть уничтожен.

Также сеанс действительно разрушается? Или генерируется новый сеанс?

0 голосов
/ 29 августа 2010

Возможно, у вас есть что-то, что .htaccess конфликтует со всем остальным? И вы уверены, что не устанавливаете это где-то еще в своем коде или в каком-то другом php.ini? Каждый раз, когда у меня возникают такие проблемы, я наконец осознаю, что забыл ОДНО место.

...