PHPのヘッダ関数を使ってみた。404だけにPearのHTTPを使うのが面倒だった。
header関数の使い方
void header ( string $string [, bool $replace [, int $http_response_code ]] )
PHP.netによると、$http_response_codeを指定すれば、HTTP1.1のレスポンスコードをいい感じに処理してくれるそうですが。。。
header関数で404を出力する・・・出来ない
<?php header("",true,404);
を呼び出すと・・・
HTTPは200 OKになる。
HTTP/1.1 200 OK Date: Fri, 25 Jul 2008 07:30:44 GMT ..略
おかしいのでちょっと工夫してみる
マニュアルには文字列を置換するとあるので、置換出来るような文字列をダミーで入れてみた。
header関数で404を出力する
<?php header(" ",true,404); # ^^^ # 空白文字を入れた
ちゃんと404になったよ。
HTTP/1.1 404 Not Found Date: Fri, 25 Jul 2008 07:36:08 GMT Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch X-Powered-By: PHP/5.2.4-2ubuntu5.3 ..略
まとめ
header関数に空文字列を渡すとダメなようです。$http_response_codeを代入するとHTTPのレスポンスが真面目に返されるのでPearのHTTPでResponseをヘッダを作成しなくてもイイ。