草庐IT

PHP session 过期过早

coder 2024-01-04 原文

我在 VPS 上运行一个带有 nginx 服务器和 PHP Fastcgi 的网站。我试图配置 php.ini(在/etc/php5/cgi 中)让 PHP session 持续超过 3 天(259200 秒),但它不起作用,我的 php session 持续时间不超过一小时。

我在 php.ini 中的当前 session 配置:

session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 259200
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 259200
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 259200
session.use_trans_sid = 0
session.hash_function = 0

这里可能是什么问题?

最佳答案

这听起来有点像服务器上的 Ubuntu 或 Debian。如果我没记错的话,某处有一个 cronjob(由 php5 或 php5-common 软件包安装),它可以更频繁地清理您的 session 目录。

我建议您将 session 配置为保存在其他地方(而不是默认位置)。调整 session.save_path 并验证 cronjob 不会清空它。

cronjob 类似于 /etc/cron.d/php - 可以肯定的是,运行 dpkg -L php5dpkg -L php5-common 。假设您使用的是 Ubuntu(或 Debian),这应该会显示所有已安装文件的位置。

关于PHP session 过期过早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372189/

有关PHP session 过期过早的更多相关文章

  1. ruby - 执行过期异常使 Ruby 线程崩溃,但处理了 Timeout::Error - 2

    任何人都可以解释为什么当对方法的调用看起来像这样时我可能会看到这个堆栈(由HTTParty::post请求引起):beginresponse=HTTParty::post(url,options)rescuelogger.warn("Couldnotpostto#{url}")rescueTimeout::Errorlogger.warn("Couldnotpostto#{url}:timeout")end堆栈:/usr/local/lib/ruby/1.8/timeout.rb:64:in`timeout'/usr/local/lib/ruby/1.8/net/protocol.rb

  2. Ruby - 执行已过期 - 2

    我有这样的ruby​​代码:begindoc=Nokogiri::HTML(open(url).read.strip)rescueException=>exlog.error"Error:#{ex}"end我得到的日志是:ERROR--:Error:executionexpired我想要block重新执行直到它成功。我该怎么做? 最佳答案 我会稍微扩展一下我的评论。您可以使用retry返回到begin:begindoc=Nokogiri::HTML(open(url).read.strip)rescueException=>exlo

  3. ruby-on-rails - 如何将 Rails session cookie 过期时间设置为 "session" - 2

    我对Rails中不在表面上的部分不是很有经验。我想要的只是有一个sessioncookie,其过期时间设置为session,这样当用户离开浏览器或其他任何东西时它就会过期。作为安全措施。 最佳答案 默认情况下,cookie是sessioncookie。通过在config/initializers/session_store.rb中提供选项散列,您可以完全控制cookie。选项与Rack::Session::Cookie(seedocs)相同。因此,例如,对于特定的到期日期,您可以提供:expire_after。如果您使用Devise

  4. ruby - 以编程方式设置 Rack session cookie 过期 - 2

    我正在使用Rack尝试在我的Sinatra应用程序中实现“记住我”功能。我可以将sessioncookie设置为在session结束时或X秒后过期,但我想同时执行这两种操作。例如,如果用户点击了“记住我”,那么我希望他们的session在X秒后结束。例如,我的app.rb有一行看起来像这样:useRack::Session::Cookie,:expire_after=>2592000,#30daysinseconds:secret=>MY_SECRET我尝试在用户登录时执行以下操作:if(!remember_me)env['rack.session.options'][:expire_

  5. ruby-on-rails - 如何使控制台中的 View 缓存片段过期? - 2

    有点像Rails.cache.delete('site_search_form')好像不行。这可能吗?谢谢。 最佳答案 ActionController::Base.new.expire_fragment(key) 关于ruby-on-rails-如何使控制台中的View缓存片段过期?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/756888/

  6. ruby-on-rails - Rails 4.0 expire_fragment/缓存过期不起作用 - 2

    我一直在尝试使用Rails的缓存功能,但我无法使某些缓存片段过期,尽管它们似乎已过期。使用Rails教程站点中指出的“俄罗斯娃娃缓存”,我正在使用此配置我在release_controller.rbController中使外部缓存过期,我在其中使用expire_fragment("all_available_releases")使片段过期。我在更新、删除或添加条目的Controller的每个方法中都使用它。这是WEBrick的日志,尽管过期片段已在其中注册,但5行后过期片段被读取并使用,而这是不应该的。这个例子是在destroy调用之后。ProcessingbyReleasesCont

  7. javascript - 如何让这个 cookie 在 14 天后过期 - 2

    functionsetcookie(cookieName,cookieValue,nDays){vartoday=newDate();varexpire=newDate();if(nDays==null||nDays==0)nDays=1;expire.setTime(today.getTime()+3600000*24*nDays);//changedthatto*14document.cookie=cookieName+"="+escape(cookieValue)+";expires="+expire.toGMTString();}functionreadcookie(cooki

  8. javascript - 如何读取 cookie 创建日期(不是过期时间) - 2

    有没有办法在变量中存储cookie创建日期?我正在使用jquery.cookie插件。如果没有办法,我正在考虑将实际时间/日期作为值存储在cookie中。这可能是一个解决方案。谢谢。 最佳答案 您确实需要将时间存储在cookie本身中。浏览器的cookieAPI不提供创建日期作为元数据。 关于javascript-如何读取cookie创建日期(不是过期时间),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  9. javascript - 如何设置 JavaScript cookie 在 10 年后过期? - 2

    我在这部分代码中使用的函数设置了cookie过期时间:time+=3600*1000;一小时后过期。怎么设置10年后过期? 最佳答案 注意:自2017年6月23日上午9:04:01起,toGMTString()已弃用,不应再使用。它的实现只是为了向后兼容;请改用toUTCString()。更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTStringvarCookieDate=newDate;

  10. javascript - 在 Javascript 中缓存和预取过期的 promise - 2

    Promises是我在Javascript中管理异步代码的首选方式。Memoize(npm上的memoizee)是一个Javascript库,用于轻松缓存和预取函数结果。理想情况下,我想结合两者的优点,并且能够“过期”一个Promise并预取一个新的Promise结果(当缓存被触及并接近过期时)。Memoize可以做到这一点,但它并没有考虑到Promises。(我知道Promises有一个内置的“永远缓存”,这是它们的本质,但是永远对我的应用程序来说太长了)到目前为止,我最好的尝试如下(使用bluebird、memoize和underscore的node.js示例):varmemoiz

随机推荐