0

この回答に基づいて、ヘッダーを送信するための非常に単純な省略関数を実装しようとしています。

関数は次のようになります。

function hdr($code)
{
    if (!headers_sent())
    {
        header('x', TRUE, $code);
    }
}

これで、ローカルサーバーで正常に機能しますが、本番環境に入ると500が表示され、エラーログが次のように表示されます。

[2012年6月19日火曜日11:01:59][エラー][クライアント87.12.83.179]スクリプトからの不正な形式のヘッダー。不正なヘッダー=x:php54.cgi

関数をそのように変更した場合:

function hdr($code)
{
    if (!headers_sent())
    {
        header($_SERVER['SERVER_PROTOCOL'], TRUE, $code);
    }
}

本番環境では機能しますが、ローカルでは機能しません。

問題は、本番phpがcgiスクリプトであることにあると思いますか?'コード'=>'メッセージ'の連想配列を使用せずに問題を解決する(つまり、すべてに対して1つの関数を持つ)方法はありますか?

4

1 に答える 1

0

問題は、ヘッダーがのように見えないことXです。ヘッダーブロックは次のようなもので始まります

HTTP/1.1 200 OK

そして、キーと値のペアのみが続きます

A-Header: Some value

WebサーバーはHTTP/1.1ステータスなしでヘッダーとして受け入れるようですが、それに依存するべきではありません。また、ローカルサーバーXがheade値として受け入れるということは、それを使用する必要があるという意味ではありません;)

于 2012-06-19T09:34:22.030 に答える