Кажется, это ошибка в PHP curl, я смог получить ту же проблему со следующими строками:
function readHeader($ch, $string)
{
echo "Header: ".$string."<Br />";
}
echo $uri = 'http://localhost/';
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 1);//this line can also be omitted
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'readHeader');
$output = curl_exec($ch);
curl_close($ch);
Вы должны извлечь заголовки традиционным способом:
class myFreebaseClass {
....
function doLogin() {
echo $uri = "http://".$this->config['apiSandboxHost'].'/'.$this->config['apiLoginPath'].'username='.$this->config['apiLoginUser'].'&password='.$this->config['apiLoginPass'];
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this,'readHeader'));
$output = curl_exec($ch);
//extracting headers:
$infos = curl_getinfo($ch);
$headers = substr($output, 0, $infos['header_size']);
$headers = explode("\n", $headers);
//done extracting headers
$output = substr($output, $infos['header_size']);
foreach($headers as $header) {
readHeader($ch, trim($header));
}
curl_close($ch);
}
function readHeader($ch, $string)
{
echo "Header: ".$string."<Br />";
if(strpos($string, 'Set-Cookie') !== false) {
$this->authCookies[] = str_replace('Set-Cookie: ', '', $string);
}
return true;
}
}