如何让Symfony2直接读取php本地会话

lui*_*s90 1 session symfony

我有一个Symfony2应用程序,我必须从另一个非symfony应用程序中读取会话集.

非symfony应用程序$_SESSION像往常一样将会话设置为.

但是,当我尝试读取此会话时,数据不存在.无论我做到了

$session = $this->get('request')->getSession();
var_dump($session->all());
Run Code Online (Sandbox Code Playgroud)

甚至(我知道我不应该这样做,但无论如何)

var_dump($_SESSION);
Run Code Online (Sandbox Code Playgroud)

这给了我会话已经启动错误,我不知道为什么有错误,尽管我从未在Symfony应用程序中启动会话.告诉我这种方式是否真的有用,这样我就可以调查一下session_start().

$session = new Session();
$session->start();
var_dump($session->all());
Run Code Online (Sandbox Code Playgroud)

PHPSESSIDcookie被在Symfony2的应用程序设置,它的值是一样的,在非symfony的应用程序设置Cookie,但我的Symfony2应用程序只是拒绝读入会话的内容.($session->getName()返回PHPSESSID,要清楚)

(确切地说,两个应用程序都在相同的域下,但不同的子域,我已经在Symfony应用程序中framework.session.domain正确设置app/config.yml并调用session_set_cookie_params非symfony应用程序具有相同的域设置以允许在子域之间共享会话cookie,即.example.com)

那么如何阅读由非symfony应用程序设置的Symfony2应用程序/控制器中的会话?谢谢.

如果这很重要,我正在使用Symfony 2.1.

god*_*out 8

无需编写自定义会话处理程序,Symfony2中的本机可以直接从默认的PHP $ _SESSION读取/写入.

在Symfony2应用程序的config.yml中,添加save_path选项,如下所示:

framework:
    session:
        save_path: ~
Run Code Online (Sandbox Code Playgroud)

清理缓存,现在您的会话将保存在默认的PHP路径中,而不是Symfony2 sessions文件夹中.您现在可以共享数据,这就是我在新的Sf2应用程序和旧的Sf1应用程序之间登录数据所做的工作.