无法启动会话,因为标题已由curl_exec()发送

问题描述 投票:0回答:1

我见过一些类似的SO问题,但它们并没有解决我的问题。

当我执行cUrl GET时,我收到一条错误消息:

Failed to start the session because headers have already been sent by
".../cUrlWrapper.php" at line 60.

相应的PHP代码是:

$this->curl = curl_init($url);
curl_exec($this->curl);  // Line 60

有谁知道发生了什么以及如何解决这个问题?

解决方案更新

虽然批准的解决方案解决了我的问题(解决方法),但我还删除了服务中不必要的ContainerAwareTrait(我的问题的根本原因),这在一开始就更好了。

php symfony curl
1个回答
3
投票

除非您设置“返回传输”选项,否则curl_exec()将输出URL请求的结果。一旦输出发生,您就无法设置任何新标头,例如启动会话。

您可以在包含session_start()文件之前调用cUrlWrapper.php(或调用curl_exec()所在的任何函数),或者您可以捕获URL请求的结果并稍后输出:

$this->curl = curl_init($url);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->curl);
// perhaps "return $result;" if this is in a function

// ...
session_start();
// ...

echo $result;
© www.soinside.com 2019 - 2024. All rights reserved.