それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

phpのHeader関数が変

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をヘッダを作成しなくてもイイ。