WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

PHPの動画モードをモジュール版にするとheader出力後にexitを付けないとステータスコードが正常に返ってこない

   

PHPの動作モードとHTTPステータスコード

例えば下記のようなコードの場合、PHPをモジュール版で動作させていると$status_codeで指定したステータスコードが返ってこない。

header('HTTP/1.1 ' . $status_code);
header('Content-type: application/json; charset=UTF-8');
echo json_encode($array);

今回は400を返そうとしたが返ってこなかった(しかし404なら返ってくるという不思議な挙動も・・・)
exitで終了すると、400が返ってくるようになった。

header('HTTP/1.1 ' . $status_code);
header('Content-type: application/json; charset=UTF-8');
echo json_encode($array);
exit;

動作モードがCGI版の場合はexitがなくてもステータスコードが返ってくるので注意が必要。

 - PHP , , , , , ,