【问题标题】:PHP PEAR Auth session timeoutPHP PEAR 身份验证会话超时
【发布时间】:2010-12-02 10:31:03
【问题描述】:

这个问题让我发疯了。在两个单独的项目中(两者都使用 PEAR 作为库,但编写在完全不同的自定义框架上)我使用 PEAR Auth 进行使用会话的身份验证。

登录后,用户在空闲一个小时左右就会退出。我没有确切的时间,但很短。

我尝试了以下但没有成功。所有将会议延长到一天的尝试,只是为了把重点放在家里。

<?php
// Tried built-in methods to extend the idle time, called after Auth is initialised
$auth->setIdle( 86400 );

// Tried increasing the sesion timeout (before auth is called)
ini_set( 'session.gc_maxlifetime', 86400 );

// Tried increasing the cookie timeout (where the phpsession is held, before auth is called)
session_set_cookie_params( 86400 );

// Tried all of the above
?>

还有其他人遇到过这个问题吗?如果可以,是否可以延长空闲时间?

我刚刚准备好编写 PEAR 并编写我自己的基于 cookie 的身份验证类,但我真的没有时间。

【问题讨论】:

    标签: php pear session-timeout authentication


    【解决方案1】:

    到目前为止,我还没有遇到这个问题,但我看到了两个您似乎尚未涵盖的可能原因:

    1. 除了 setIdle() 之外,您还可以检查 auth 类的 setExpire() 方法。
    2. 可能有其他基于 php 的应用程序/脚本在同一台服务器上运行,使用相同的会话存储目录并具有较低的超时。根据session.gc_maxlifetime docs:

      如果不同的脚本有不同的 session.gc_maxlifetime 的值但是 共享同一个地方存放 会话数据,然后是脚本 最小值将清洁 数据。在这种情况下,使用这个指令 连同session.save_path.

    【讨论】:

    • 谢谢!我会试一试,然后告诉你进展如何。
    • 按照建议尝试了 setExpire() 和 setIdle() ,但这似乎没有任何区别。该服务器是一个云服务器,所以我不完全确定会话是如何存储的——很可能会受到其他脚本的干扰。您认为对相关网络应用使用不同的 session.save_path 会有所帮助吗?
    • 是的,你一定要试试。如果它是一个云服务器,很可能有更多的 php 应用程序在上面运行,所以这很可能是罪魁祸首。如果路径未指定,它在 *nix 服务器上默认为 '/tmp',因此将其设置为类似 '/tmp/[yourAppName]' (或者更好的是,'/tmp/[hash of yourAppName]')可能会解决你的问题(至少它会排除另一个可能的原因;)
    • 哦,请注意到目前为止您尝试的所有设置都可以一起使用,因此您仍然需要设置 PEAR 值以及 gc_maxlifetime
    • 还有一个:在更改保存路径之前,您可以通过session_save_path()查看当前情况。如果服务器已经使用了一些非默认目录,这会给你一个提示。如果是这样,您可能应该在其中使用一个子目录。
    猜你喜欢
    • 2019-07-26
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2010-10-02
    • 2018-11-16
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多