Сброс PHP через сеанс через некоторое время

Я знаю, что эта проблема была представлена ​​здесь в SO, и я пробовал решения, но это все еще не исправлено.

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

У меня есть следующий код на всех страницах:

ini_set('display_errors', 0); $sessionCookieExpireTime = 2880000; session_set_cookie_params($sessionCookieExpireTime); ini_set('session.gc_maxlifetime', $sessionCookieExpireTime); session_start(); echo ini_get('session.gc_maxlifetime'); //echos 2880000 as expected 

Но сеанс по-прежнему сбрасывается через 24 минуты (или около того) бездействия.

phpinfo () возвращает следующий вывод для сеанса: введите описание изображения здесь

Любая идея, почему это не работает? (PHP 5.3.10)

благодаря

Вы делаете этот код в КАЖДОМ скрипте, который использует сеансы? Изменения ini_set применяются ТОЛЬКО к сценарию, в котором они выполняются, и ТОЛЬКО для времени выполнения этого конкретного сценария.

Если вы хотите сделать это постоянным глобальным изменением, вам придется изменить php.ini или поместить некоторые директивы php_values ​​в http.conf / .htaccess.

Несмотря на то, что ответ Marc B разделяет некоторые впечатления, он не работал на меня. Я был уверен, что все в порядке с моим скриптом, и у меня не было никакого общения с сеансом в моем коде.

После эпической борьбы я обнаружил, что моя проблема на самом деле связана с общей средой хостинга. Из документа PHP:

«Если разные скрипты … используют одно и то же место для хранения данных сеанса, тогда скрипт с минимальным значением будет [определять тайм-аут сеанса]».

После этого проблема была совершенно очевидной. В некотором скрипте (размещенном на том же сервере) использовалось по умолчанию php.ini session.gc_maxlifetime, и это привело к сбросу моих сеансов.

Решение заключалось в создании папки под корнем моего хостинга (убедитесь, что она не доступна в Интернете), установите для нее права и затем используйте session.save_path, чтобы сообщить php, где хранить мои сеансы. Что-то вроде:

 ini_set("session.gc_maxlifetime","21600"); // 6 hours ini_set("session.save_path", "/your_home/your_sessions/"); session_start(); 

Этот веб-сайт предоставил большое представление: php-сессии на общем хостинге

Поэтому, если вы столкнулись с этой проблемой, не забудьте следовать рекомендациям Marc B, и если это не поможет, попробуйте это.

С наилучшими пожеланиями!!