嗨,我是编程新手,但我目前正在解决会话超时问题。基本上我的会话保持超时,即使我已经改变了session.gc_maxlifetime。 我认为使用相同目录来存储没有设置maxlifetime的会话数据的另一个脚本正在运行,因此它将使用较短的值。为了解决这个问题我已经改变了htaccess文件,但它仍然在1小时30分钟后终止,我需要它持续更长时间。我的htaccess文件如下。我看过并试过了这个板上的许多相关帖子,但到目前为止还没有任何工作。任何想法都将不胜感激。
SetEnv PHPRC /home/rocket/public_html/php.ini
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<IfModule mod_php5.c>
php_value session.save_path "new/username/php_sessions"
php_value session.gc_maxlifetime "86400"
php_value session.cookie_lifetime "86400"
</IfModule>
# END WordPress
答案 0 :(得分:3)
PHP不会对会话cookie做什么,你可能认为它...
php_value session.gc_maxlifetime "86400"
这仅仅设置了垃圾收集可能发生的时间 - 因为在此时间之后会话数据 的可能性非常小,这是不可能的成为罪魁祸首。
php_value session.cookie_lifetime "86400"
这会设置会话Cookie到期的时间...... 但它不会在session_start()
更新,因此,如果您在一个页面上启动会话,则会设置时钟滴答作响。从一个页面移动到另一个页面不会重置“时钟”,因此cookie_lifetime
为600的会话将在启动后10分钟到期在10分钟不活动后 - 您可能是看到这种行为。
您最好设置php_value session.cookie_lifetime "0"
这意味着当用户关闭浏览器时,会话Cookie将会 。
如果你想处理在一段时间不活动后触发的任意过期,最好在PHP代码中通过在会话中设置变量来执行此操作,例如$_SESSION['expires']
和检查/更新/处理每页的开头。