我对这是一个SO问题还是一个SF问题进行了分歧,所以我从这里开始。
我们有一个在PHP 4下运行的遗留应用程序(不要问),以及我们需要在PHP 5下运行的其他一些代码。
在PHP 5 / cgi端运行代码时,PHP 4端设置的会话数据似乎不可见/不存在。
我正在做session_start
,在PHP 4下添加一些会话数据,然后从PHP 5和var_dump
进行$_SESSION
会话null
。
有人有这个工作吗?
环境:
答案 0 :(得分:2)
首先,您是否已验证两个版本的PHP的session.save_path是否相同?您可以使用session_save_path()
获取/设置它。
其次,您确定两个PHP实例使用相同的会话ID,还是每个版本都生成自己的会话ID?您可以使用session_id()
获取/设置它。如果不是,请验证session.name是否相同,否则他们可能会尝试从不同的Cookie加载会话ID。 (可以使用session_name()
获取/设置。)
即使上述两者都匹配,我也不知道他们是否可以分享这样的会话。如果没有,您可以为它们两者定义一个自定义会话处理程序。这就是负载平衡的应用程序通常如何工作 - 它们有一个自定义会话处理程序,可以随时随地保存会话信息(通常在数据库而不是文件中),并且所有服务器都可以访问该共享位置。请参阅session_set_save_handler()
。