【发布时间】: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