オプションを設定すると、cURL はヘッダーを含む完全な応答を返しCURLOPT_HEADER
ます。ヘッダーとコンテンツは 2 つの CRLF で区切られています。ヘッダー自体は CRLF を使用して分離されます。この情報は、応答からステータス ヘッダーを解析するのに十分なはずです。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/err-500.php");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
list($header, $body) = explode("\r\n\r\n", $data, 2);
$header = explode("\r\n", $header);
echo $header[0];
出力:
HTTP/1.1 500 Internal Server Error
エラーをスローしたい場合は、スクリプトで500
応答ステータスとカスタム ヘッダーを 1 行のコードで出力できます。
または、header()
関数を使用して応答コードを設定できます。
header("X-Error-Message: Invalid Signature", true, 500);
PHP は、ステータス行の1.1
とInternal Server Error
の部分を埋めます。
HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.19
X-Powered-By: ASP.NET
X-Error-Message: Invalid Signature
Date: Thu, 14 Feb 2013 21:11:00 GMT
Content-Length: 100