Apache生产中忽略了PHP会话设置?

时间:2017-11-13 09:27:56

标签: php apache session centos virtualhost

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

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

我在虚拟主机定义中进行了设置,如下所示:

//@FunctionalInterface
public interface MyCustomInterface {
    <T> MyCustomOutput myCustomAction(MyCustomInput<T> str) throws MyCustomException;
}

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

在开发环境(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版(最终版)

一个值得注意的观察 - 不仅仅是这个项目,同样的设置也适用于另一个项目。

提前感谢任何有助于我解决此问题的提示或想法,我们将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

嗯.. 1)验证代码中没有与gc混淆的ini_set。因为那会覆盖你在apache中放置的任何设置。 2)确认没有.htaccess做与1相同的事情,因为它显然也会废弃设置。 3)设置除数/概率(可能有帮助) 4)也强制执行set_cookie参数,它可能不是服务器搞乱但是获得默认会话cookie生存期的客户端因此在30分钟后会杀死cookie。