2017-12-28 34 views
0

よく似たような質問がありましたが、私の問題は解決しませんでした。curl_exec()によってヘッダがすでに送信されているため、セッションを開始できませんでした。

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

対応するPHPコードは次のとおりです:

私はカールGETを実行

は、私はエラーメッセージを取得しています

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

は、誰もが何が起こっているか知っていますし、私はこの問題を解決できる方法?

ソリューションを更新

承認されたソリューションは、私の問題(回避策)を解決しますが、私はまた、より良い最初の場所にあるサービス(私の問題の根本的な原因)で、不要なContainerAwareTraitを削除しました。

+0

session_start()はファイルの先頭にある必要があります –

答えて

2

「返品転送」オプションを設定しない限り、curl_exec()となります。は、URLリクエストの結果です。その出力が行われると、セッションの開始など、新しいヘッダーを設定することはできません。

あなたはcUrlWrapper.phpファイル(またはcurl_exec()がであることを何でも関数を呼び出す)、またはあなたはそれが後にURL要求と出力の結果をキャッチすることができます含ま前session_start()を呼び出すことができ、次のいずれか

$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

意味があります。セッションを開始する前に何も出力できません。 – jeprubio

+0

私はオプションを設定した後、curl_exec()の前にsession_sart()を設定して例外が消えました。ありがとう! – JVerstry

関連する問題