php会话超时

php会话超时,php,session,timeout,Php,Session,Timeout,我有一些关于php会话超时的问题。我在应用程序运行时设置了以下值: session.gc_maxlifetime = 3600 session.cookie_lifetime = 3600 session.save_path = myApplicationPath/tmp session.use_cookies = 1 session.use_only_cookies = 1 但是,我的会话在大约30分钟后就会到期。此外,我的tmp目录仍然为空,因此似乎没有实际设置cookies。不过,回显i

我有一些关于php会话超时的问题。我在应用程序运行时设置了以下值:

session.gc_maxlifetime = 3600
session.cookie_lifetime = 3600
session.save_path = myApplicationPath/tmp
session.use_cookies = 1
session.use_only_cookies = 1

但是,我的会话在大约30分钟后就会到期。此外,我的tmp目录仍然为空,因此似乎没有实际设置cookies。不过,回显ini_get(“session.save_path”)确实返回了正确的路径。

我要说的是,PHP找不到您的
save_path
,或者没有写入该路径的权限,因此它将会话文件(而不是cookie)存储在默认的共享目录中(因此,gc_maxlifetime最短的站点将从所有其他站点删除会话)。

注意:

如果不同的脚本具有不同的session.gc_maxlife值,但共享存储会话数据的相同位置,则具有最小值的脚本将清理数据。在这种情况下,请将此指令与session.save_path一起使用


只是为了检查:在调用
会话\u start
之前,请确保已设置ini值。另外,请与
phpinfo()的输出进行比较
您可以将其放入测试文件中。值确实是在会话启动之前设置的。phpinfo状态:local value var/www/myproject/tmp master value/etc/lib/php5。会话文件仍然写入到主值中。找到了!使用Zend_会话,您不会收到关于在其他地方启动的会话的通知。当我停止使用Zend_会话时,我没有收到通知tice.将我的代码放到引导程序中解决了问题。OP描述了相反的行为:会话直到30分钟才过期,尽管session.gc_maxlife状态为6分钟。AFAIU
session.gc_maxlife
是1小时,会话在它们应该停止之前就结束了。哇,对不起,这是我的错。不知道怎么做我曾经把3600秒误认为是6秒而不是60分钟,这也是我自己的猜测。然而,save_path的输出为我提供了正确的路径,并且该目录有777个权限。会话文件确实写入了默认目录。我在这里遗漏了什么?
session.save\u path=myApplicationPath/tmp
:您的实际路径实际上不是以斜杠开始的吗?