その関数は使ったことないけどリファレンス見るかぎり
404出すには2回呼び出す必要があるようだが2回やってる?

https://secure.php.net/manual/ja/function.http-response-code.php
> var_dump(http_response_code(404));
> var_dump(http_response_code());

最初404設定するときに返ってくるのは設定した404ではなく
設定前の(おそらく)200であるようだけど