gpt4 book ai didi

apache - Symfony2 : Failed to start the session because headers have already been sent

转载 作者:可可西里 更新时间:2023-11-01 13:13:34 29 4
gpt4 key购买 nike

长话短说在带有 Nginx/PHP-FPM 的 Linux 机器上出现错误,指出“无法启动 session ,因为 header 已经发送。”。 Apache 本地机器设置没有发生错误

所以在我的本地机器上,我的 Symfony2 应用程序运行良好。没有错误弹出。但是,一旦我部署到我们的 Linux 服务器,当我在 Controller 类中调用某个 Action 时,我就会收到此错误

Failed to start the session because headers have already been sent. 

在我已经调用的索引 Action 中

$session = $this->getRequest()->getSession();

在同一个 Controller 类中的另一个 Action 中,我再次调用它。当我尝试

时弹出错误
$session->set('foo', $bar);

在我的 Twig 中,我通过一个表单和一个具有 formaction 属性的按钮来调用操作

<form id='blahblah'>
.... some fields here .....
<button type='submit' formaction='{{path('2ndAction')}}'></a>
</form>

所以在我的本地机器上,运行 Apache 一切正常。 Linux 服务器正在使用 Nginx 和 php-fpm,但由于某种原因它崩溃了。我检查了 phpInfo() 并将 session 自动启动设置为关闭。不确定这是否是 Nginx/php-fpm 问题,但我认为这可能是相关信息。

这是 Controller 声明、indexAction() 和我的 2ndAction()

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
use CBSi\Utils\HTTPUtils\CURLUtil;

class StartController extends Controller
{
/**
* @var CurlUtil $curlUtil
*/
private $curlUtil;

/**
* @var AccessControl $accessControl
*/

private $accessControl;

/*placeholder for request object*/
private $requestHolder;


/**
* @Route("/path/for/action/one", name="start")
* @Template()
*/


public function indexAction()
{
$session = $this->getRequest()->getSession();
$this->curlUtil = $this->get('curlUtil');
$this->requestHolder= Request::createFromGlobals();

// Some logic is done here


return $this->render('ListEngagementBundle:Start:start.html.twig');

}

/**
* @Route("/path/to/second/action", name="2ndAction")
* @Template
*/
public function 2ndAction(){
$session = $this->getRequest()->getSession();
$this-> curlUtil = $this->get('curlUtil');
$this->requestHolder= Request::createFromGlobals();

//Some logic is done here to get the data for the session variable

$bar= logic output

$session->set('foo', $bar);

return $this->redirect($this->generateUrl('start'));
}
}

如果您需要我可以提供的更多信息,我会:)

最佳答案

所以我想通了。在我打电话的第二个 Action 中

$session->getRequest()->getSession(); 

我不得不把它改成

$session = new Session();
$session->start();

去图吧。 :P

关于apache - Symfony2 : Failed to start the session because headers have already been sent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127122/

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