2017-12-28 14 views
0

Ich habe einige ähnliche SO-Fragen gesehen, aber sie haben mein Problem nicht gelöst.Fehler beim Starten der Sitzung, da Header bereits von curl_exec() gesendet wurden

Wenn ich einen cUrl GET ausführen, erhalte ich eine Fehlermeldung:

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

Der entsprechende PHP-Code ist:

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

Wer weiß, was passiert ist und wie ich dieses Problem lösen könnte ?

Lösung Aktualisieren

Obwohl die zugelassene Lösung mein Problem (Abhilfe) gelöst, entfernte ich auch eine unnötige ContainerAwareTrait in einem Dienst (Ursache für mein Problem), die in erster Linie noch besser ist.

+0

session_start() muss der Anfang der Datei sein –

Antwort

2

Wenn Sie die Option "Rücktransfer" nicht aktivieren, wird curl_exec()Ausgabe das Ergebnis der URL-Anfrage. Sobald diese Ausgabe erfolgt ist, können Sie keine neuen Header festlegen, wie das Starten einer Sitzung.

Sie können entweder rufen session_start()vor Sie umfassen die cUrlWrapper.php Datei (oder rufen Sie unabhängig von Funktion, dass curl_exec() ist in), oder Sie das Ergebnis der URL-Anforderung und gibt es später fangen:

$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; 
+0

Sinnvoll, Sie können nichts vor dem Start der Sitzung ausgeben. – jeprubio

+0

Ich habe eine session_sart() nach dem Festlegen meiner Optionen und vor meinem curl_exec() gesetzt und die Ausnahme ist verschwunden. Vielen Dank ! – JVerstry

Verwandte Themen