php会话在几分钟后随机过期

php会话在几分钟后随机过期,php,session,session-cookies,Php,Session,Session Cookies,我有一个多年来一直正常工作的登录页面/系统,让用户登录,直到他/她关闭浏览器窗口或手动注销。但是最近(从昨天开始)在仅仅几分钟的不活动之后,会话cookie似乎过期,导致用户自动注销 这种情况发生在不同的浏览器和不同的操作系统上,PHP版本是5.6.29,最近有所更改(在5.5甚至5.3之前) 我使用session\u start()在每个页面上创建并刷新会话。登录脚本首先检查用户名和PW,并从数据库中获取一些其他用户数据。这些其他数据首先保存在变量中,然后写入会话变量,如 $_SESSION[

我有一个多年来一直正常工作的登录页面/系统,让用户登录,直到他/她关闭浏览器窗口或手动注销。但是最近(从昨天开始)在仅仅几分钟的不活动之后,会话cookie似乎过期,导致用户自动注销

这种情况发生在不同的浏览器和不同的操作系统上,PHP版本是5.6.29,最近有所更改(在5.5甚至5.3之前)

我使用
session\u start()
在每个页面上创建并刷新会话。登录脚本首先检查用户名和PW,并从数据库中获取一些其他用户数据。这些其他数据首先保存在变量中,然后写入会话变量,如

$_SESSION['username'] = $name;
$_SESSION['usertype'] = $type;
成功登录状态保存如下:

$_SESSION['login'] = "ok";
session_start();
if(($_SESSION['login'] != "ok") OR ($_SESSION['usertype'] != "xxx")) {
 header("Location: ../login.php"); /* redirects to login page if conditions are not true */
 exit;
 }
在其他页面上,我检查登录状态,如下所示:

$_SESSION['login'] = "ok";
session_start();
if(($_SESSION['login'] != "ok") OR ($_SESSION['usertype'] != "xxx")) {
 header("Location: ../login.php"); /* redirects to login page if conditions are not true */
 exit;
 }
登录正常,登录的用户可以继续进入其他页面,只要用户连续不断地或多或少地这样做,但是如果有人在继续之前等待几分钟(即没有任何活动),他/她将注销(即在尝试打开另一页面时重定向到登录页面)

更糟糕的是,有一半的时间它就像预期的那样工作,也就是半小时后

任何帮助都将不胜感激


更新:

添加
ini_集('session.gc_maxlifetime',3600')和'ini_set'(session.cookie_life',3600);没有帮助。我又把它拿走了

之后,我查看了错误日志,发现:

ap_pass_旅失败,错误103:软件导致的连接 流产


(问题是,我无法访问服务器设置-这是在共享的Web空间上…

您可以通过phpinfo()查看php配置(php.ini)


对于任何感兴趣的人:会话实际上并没有过期,但会话变量消失了(并再次随机出现)

我在这里发布的后续问题中对此进行了讨论:


您必须已将
会话.name
从默认的
PHPSESSID
更改为其他内容。保留其默认值
session.name=PHPSESSID
。一切都会好起来的


这是一个PHP错误。

如果您安装了新的PHP,请检查
PHP.ini
文件。默认会话超时可能是默认值,旧系统可能会将其延长到更长的时间。请参见以下答案:您应该使用php.ini中的默认会话值。另外,请尝试清除浏览器cookies,并检查网站的错误日志文件中是否存在错误。您还可以检查存储会话数据的文件夹是否具有正确的权限
<?php
     ini_set('session.gc_maxlifetime', 3600);