gpt4 book ai didi

php - 服务中的 symfony2 空 session ID

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

我使用 symfony 2.5,我有下一个 monolog 服务。

<?php

namespace Megogo\CoreBundle;

use Symfony\Component\HttpFoundation\Session\Session;

class SessionRequestProcessor
{
/**
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
protected $session;

/**
* @var
*/
private $token;

public function __construct( Session $session)
{
$this->session = $session;
}

public function processRecord(array $record)
{

if (null === $this->token) {
try {
$this->token = $this->session->getId();
} catch (\RuntimeException $e) {
$this->token = '????????';
}

}
$record['extra']['token'] = $this->token;

return $record;
}
}

服务.yml

services:
monolog.formatter.session_request:
class: Monolog\Formatter\LineFormatter
arguments:
- "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"

monolog.processor.session_request:
class: Megogo\CoreBundle\SessionRequestProcessor
arguments: ["@session"]
tags:
- { name: monolog.processor, method: processRecord }

我从官方文档中获取示例。 Adding a Session/Request Token

我有问题,$this->session->getId() 返回空字符串。如果我添加 $session->start(); 一切正常。我可以获得 session ID。但这很奇怪,因为在我的其他服务中,没有这种解决方法就可以正常工作。当我制作 app/console cache:clear 时出现错误 Failed to start the session: already started by PHP.

最佳答案

我遇到过类似的问题。

我已经通过添加 Controller 解决了这个问题

$this->get('session')->start();

在您的情况下,您可以在尝试获取 session ID 之前简单地添加以下行

$this->session->start();

不要担心在 session 已经启动时调用“start()”——它会检查并简单地跳过(重新)启动它。

当前 (2.6) 版本的 Symfony 没有 config property这将强制 session auto_start

关于php - 服务中的 symfony2 空 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25674648/

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