我最近在现有网站上创建了一个新的symfony应用程序。然后,在这个新的应用程序中,我想读取旧应用程序的会话(类似登录用户ID)。不幸的是,在每个应用程序中,会话是完全独立的(我的意思是symfony会话,类似于$ this-> getUser() - > getAttribute(“userSession”))。
我猜symfony会话是使用$ _SESSION实现的:
$_SESSION = array("symfonyapp1" => array(....), "symfonyapp2" => array(....));
所以我在旧的应用程序中写了$_SESSION["test"] = "testStr"
并写了var_dump($_SESSION["test"]);
。屏幕只是打印“null”,所以我的猜测是错误的。
然后我想也许我可以阅读某个应用程序的配置然后获取该应用程序的用户。所以我在我的新应用程序中编写了以下代码:
require_once($_SERVER['DOCUMENT_ROOT'].'/../config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
$context = sfContext::createInstance($configuration);
var_dump($context->getUser()->getAttribute("userId"));
不幸的是,它会打印“null”。
我现在完全不知道。非常感谢任何建议
答案 0 :(得分:0)
检查您的应用的会话标识符。 Php的默认会话ID是PHPSESSID
,据我所知,Symfony 1.4应用的默认会话标识只是symfony
您可以通过设置apps/YOUR_APP_NAME/config/factories.yml
文件来修改Symfony的会话标识符:
all:
storage:
param:
session_name: PHPSESSID
通过这样做,您的Symfony应用程序将与旧应用程序共享相同的会话ID,您将能够在Symfony应用程序中阅读$_SESSION
属性