在PHP4(mod_php)和PHP5(cgi)之间共享会话

时间:2011-11-12 16:21:10

标签: php

我对这是一个SO问题还是一个SF问题进行了分歧,所以我从这里开始。

我们有一个在PHP 4下运行的遗留应用程序(不要问),以及我们需要在PHP 5下运行的其他一些代码。

在PHP 5 / cgi端运行代码时,PHP 4端设置的会话数据似乎不可见/不存在。

我正在做session_start,在PHP 4下添加一些会话数据,然后从PHP 5和var_dump进行$_SESSION会话null

有人有这个工作吗?

环境:

  • Apache 2.2.x
  • PHP 4.4.9(mod_php)
  • PHP 5.1.3(cgi)
  • Centos 5.6

1 个答案:

答案 0 :(得分:2)

首先,您是否已验证两个版本的PHP的session.save_path是否相同?您可以使用session_save_path()获取/设置它。

其次,您确定两个PHP实例使用相同的会话ID,还是每个版本都生成自己的会话ID?您可以使用session_id()获取/设置它。如果不是,请验证session.name是否相同,否则他们可能会尝试从不同的Cookie加载会话ID。 (可以使用session_name()获取/设置。)

即使上述两者都匹配,我也不知道他们是否可以分享这样的会话。如果没有,您可以为它们两者定义一个自定义会话处理程序。这就是负载平衡的应用程序通常如何工作 - 它们有一个自定义会话处理程序,可以随时随地保存会话信息(通常在数据库而不是文件中),并且所有服务器都可以访问该共享位置。请参阅session_set_save_handler()