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

PHP4(mod_php)和PHP5(cgi)之间的共享会话,php,Php,我对这是一个SO问题还是SF问题有分歧,所以我从这里开始 我们有一个在PHP4(不问)下运行的遗留应用程序,以及一些需要在PHP5下运行的其他代码 在PHP5/cgi端运行代码时,在PHP4端设置的会话数据似乎不可见/不存在 我正在做一个session\u start,在PHP4下添加一些session数据,然后从PHP5对session执行var\u dump,并且$\u session为null 有人用过这个吗 环境: Apache2.2.x PHP 4.4.9(mod_PHP) PHP

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

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

在PHP5/cgi端运行代码时,在PHP4端设置的会话数据似乎不可见/不存在

我正在做一个
session\u start
,在PHP4下添加一些session数据,然后从PHP5对session执行
var\u dump
,并且
$\u session
null

有人用过这个吗

环境:

  • Apache2.2.x
  • PHP 4.4.9(mod_PHP)
  • PHP 5.1.3(cgi)
  • Centos 5.6

首先,您是否验证了这两个版本的PHP都是相同的?你可以用它来获取/设置它

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


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

在我看来,将遗留应用程序移植到PHP5的麻烦要小得多。此外,PHP4在几年前就已经过时了,在一个实时系统上使用它是一个巨大的安全风险。此外,您甚至正在使用一个非常过时的PHP5版本。我建议升级您的软件堆栈,抛弃PHP4,并修复阻止您的脚本在PHP5中运行的任何问题摘要:是的,就是这样。因此,您实际上可以运行mod_php和php cgi并共享会话数据。细节:我检查了两个版本的phpinfo和php.ini是否相同。但是其他人注意:不同版本之间的配置默认值可能(和曾经)不同。因此,由于php.ini中没有session.save_路径的值,所以一个有一个值,另一个有另一个值。谢谢