【问题标题】:PHP session settings ignored on Apache production?在 Apache 生产环境中忽略 PHP 会话设置?
【发布时间】:2017-11-13 17:36:01
【问题描述】:

我在为我们的项目设置 PHP 会话时遇到问题,想寻求帮助。目标是通过增加会话生命周期来延长购物车数据的有效性(存储在会话中)。

问题是,无论我做什么,无论设置如何,会话文件都会在几个小时后被删除。

我在虚拟主机定义中这样设置:

<VirtualHost *:80>
    ...
    php_value    memory_limit            128M
    php_value    upload_max_filesize     20M
    php_value    post_max_size           20M
    php_value    session.cookie_lifetime 2592000
    php_value    session.gc_maxlifetime  2592000
    php_value    session.save_path       "/data/hosting/myproject/sessions"
    ...
</VirtualHost>

甚至将会话存储移动到专用目录以避免任何可能的系统维护清除会话,但没有成功。

在开发环境 (Wamp 3.0.6 64b) 上,这工作得很好,而且正如预期的那样,在生产服务器上并没有那么多。此外,当我尝试使用 PHP ini_get() 函数 (http://php.net/manual/en/function.ini-get.php) 仔细检查设置值时,开发和生产环境都会返回正确的必需值。

项目存储在我们使用这些的 VPS 上:

  • PHP 5.5.38
  • Apache/2.2.15 (Unix)
  • CentOS Linux 6.0 版(最终版)

值得注意的观察 - 不仅仅是这个项目,同样的设置在应用于另一个项目时也会失败。

提前感谢任何可以帮助我解决这个问题的提示或想法,我们将不胜感激。

免责声明:请不要评论解决方案本身,我很清楚它不是最佳的。这是一个老项目,重写购物车数据存储方法根本不可行。

【问题讨论】:

    标签: php apache session centos virtualhost


    【解决方案1】:

    嗯.. 1) 验证代码中没有与 gc 相关的 ini_set。因为这会覆盖您在 apache.xml 中放置的任何设置。 2)验证没有 .htaccess 做与 1 相同的事情,因为它显然也会破坏设置。 3)设置除数/概率(可能有帮助) 4) 也强制执行 set_cookie 参数,可能不是服务器搞砸了,而是客户端获得了默认会话 cookie 生命周期,因此 30 分钟后会杀死 cookie。

    【讨论】:

    • 非常感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2023-03-10
    • 2023-04-09
    • 2015-05-30
    • 2015-04-04
    相关资源
    最近更新 更多