gpt4 book ai didi

php - session 已在 FOS User Bundle Registration Confirmation 中开始

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:57 24 4
gpt4 key购买 nike

我正在使用 FOSUserBundle 进行用户注册。当使用/register/confirm/xxxx-token-xxxxx 确认用户时,我有时会收到错误消息“无法启动 session :已由 PHP 启动($_SESSION 已设置)。”

这发生在 NativeSessionStorage::start() 方法中。显然已经有一个 session (在这种情况下,$_SESSION 是一个空数组)。

这种行为很难重现。它大部分时间都有效。我在 dev 和 prod 环境(均为 php 5.3.x)中看到了这一点

知道为什么 $_SESSION 在初始化 session 时是一个空数组吗?

最佳答案

我解决了在重定向之前使 session 无效的问题。

在 RegistrationController(我已经复制到我的包中并进行了修改)的方法 confirmAction 中,我更改了:

   if (null === $response = $event->getResponse()) {
$url = $this->container->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}

到:

   if (null === $response = $event->getResponse()) {
$session = $request->getSession();
$session->invalidate();
$url = $this->container->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}

这对我有用。

Symfony 建议不要使用标准的 PHP session 方法,例如 session_start() 和 session_destroy()。

关于php - session 已在 FOS User Bundle Registration Confirmation 中开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com