是否可以在不同的PHP版本之间共享会话


Is it possible to share session between different PHP versions?

我正在开始一个旧的应用程序重构,我将重建一些从意大利面条代码到MVC(Symfony)的功能。计划是我将使用子域设置新的IIS应用程序。现在,旧应用程序运行的是无法升级的PHP 5.3。新应用程序将在 PHP 5.6 上运行。我唯一需要携带的是身份验证。我可以在旧应用程序或新应用程序上使用登录脚本。我尝试设置会话 cookie 参数,但我无法让它工作。

完全可能还是我必须使用数据库?如果不可能,在阿帕奇能实现吗?

编辑:

我要做的是:

session.cookie_domain = ".dev" 

在两个php.ini中。然后我在一个会话中启动会话,设置一个会话变量。

session_start();
$_SESSION['test'] = 123;

然后在第二个应用程序(php 5.6)中,我正在尝试阅读它:

session_start();
var_dump($_SESSION);

但它是空的。

显然,设置会话cookie域不适用于顶级域(TLD),例如.dev

将我的代码更改为:

ini_set('session.cookie_domain', '.local.dev');

现在我可以在 .local.dev 网站上设置会话变量并 new.local.dev 读取它们

这两个应用程序在物理上位于单独的文件夹中,从两个 IIS 条目运行并使用不同的 PHP 版本。

对于不同 php 版本之间的共享会话,它们在物理上必须具有相同的 session.save_path ini 设置,默认为 /tmp

因此,如果您在不同的 Docker 容器中有两个 PHP 版本,则应将两个版本的session.save_path设置为 /tmp/php_session 之类的内容,然后与两个 Docker 容器共享该目录。