我看过一些类似的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
(我的问题的根本原因),这在一开始就更好。
答案 0 :(得分: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;