【问题标题】:PHP session losing data on production server - CodeIgniterPHP会话在生产服务器上丢失数据 - CodeIgniter
【发布时间】:2013-01-05 13:46:13
【问题描述】:

我的 CodeIgnighter 站点在推送到生产服务器时丢失会话数据时遇到一些问题。

我们有一个 CodeIgnighter 网站,当人们浏览该网站时,该网站使用会话来存储与预订相关的数据。我可以很高兴地离开页面 15 分钟以上,然后返回,一切正常。

但是,当将代码实时推送到生产服务器时,会话似乎在 5 分钟标记后超时/丢失数据。

我已经在 CodeIgnighter 配置文件中设置了默认会话超时,但我想知道是否有一些服务器/php/apache 级别可能覆盖我的 CodeIgnighter 设置?不幸的是,我对会话处理的了解不是很好,Google 到目前为止也没有提供帮助!

我已经从 phpinfo() 中附加了会话信息;来自工作站点和损坏的生产站点。

任何帮助将不胜感激!

工作开发网站:

指令 本地价值 主价值 session.auto_start 关 关 session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain 无值 无值 session.cookie_httponly 关 关 session.cookie_lifetime 0 0 session.cookie_path // session.cookie_secure 关 关 session.entropy_file 无值 无值 session.entropy_length 0 0 session.gc_divisor 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 4 4 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check 无值 无值 session.save_handler 文件 文件 session.save_path /tmp /tmp session.serialize_handler php php session.use_cookies On On session.use_only_cookies On On session.use_trans_sid 0 0

生产站点损坏:

指令 本地价值 主价值 session.auto_start 关 关 session.bug_compat_42 关 关 session.bug_compat_warn 关 关 session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain 无值 无值 session.cookie_httponly 关 关 session.cookie_lifetime 0 0 session.cookie_path // session.cookie_secure 关 关 session.entropy_file 无值 无值 session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check 无值 无值 session.save_handler 文件 文件 session.save_path 无值 无值 session.serialize_handler php php session.use_cookies On On session.use_only_cookies On On session.use_trans_sid 0 0

【问题讨论】:

  • 相信你会从这个问题的公认答案中找到合适的解决方案:stackoverflow.com/questions/1516266/…
  • 谢谢,我正在使用 CodeIgniter,所以它应该已经自行管理会话,但我更深入地研究了这些帖子。我认为 session.save_path 未在生产服务器上设置这一事实可能会导致问题?
  • CI 使用自己的会话,您应该检查那里发生了什么......我怀疑它可能与 Apache 相关。
  • 有趣的是,您在五分钟后遇到了会话问题,因为这是 APPPATH/config/config.php 中 "$config['sess_time_to_update']" 的默认设置。 $config['sess_expiration'] 时间设置为多少? -- 附带说明一下,几乎每次都让我感到困扰的一件事是忘记在 config.php 中设置加密密钥,因为无论您是否使用加密会话,会话都需要它:)
  • CI 在 AJAX 调用方面存在会话问题。看一看:github.com/EllisLab/CodeIgniter/pull/1283

标签: php codeigniter session session-cookies


【解决方案1】:

实际上,我会建议一个完全不同的解决方案,并告诉您使用数据库作为会话的处理程序。我更喜欢使用数据库,因为您可以拥有多个服务器,并且它是会话安全性的最佳选择。

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 2019-01-18
    • 2019-02-10
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多