[PHP-users 25844] Re: CGIで動くときに、リクエスト変数が取れない

Sumito_Oda oda @ bst.jp
2005年 6月 16日 (木) 04:19:27 JST


織田です。
# 既に解決してますが

Yusuke ITOさんの<20050615174945.24567240 @ white.livedoor.com>から
>CLI版だと、明示的にheaderを出力しない限りapacheが以下のエラーを吐きます。
>「malformed header from script. Bad header=Array: 
>/path/to/documentroot/hoge.cgi」

PHPのマニュアルにも記述があるとおりCLI版では明示的にheaderを出力しない限り、
勝手に適当なヘッダは付けられませんが、[PHP-users 25838]で渡邉さんが
試された「2行目の改行」のところが要になります。まずNPH-CGIではないので、
ある程度のヘッダはApacheが生成します。そして「2行目の改行」つまり
「改行だけの行」で、HEADERとBODYのセパレータになり、それ以降の出力は
BODY部の出力になります。このままだとContent-Typeが指定されませんが、
指定されない場合にはDefaultTypeに基づきApacheが出力を付加します。
(DefaultTypeが指定されていない場合はtext/plainとみなされる)

エラーが出たのはHEADERとして適合しないデータだったためで、
いきなりHEADERなしのBODYのみでもApacheの場合はその辺は
適当に処理してくれます。また以下のように適合していれば、
あとはContent-Type等が補完され、きちんと表示されます。

#!/bin/sh
echo "X-TestHeader: test"
echo
echo "test"

最も必要なヘッダはちゃんと明示的に出力するのが、
間違いの無い書き方だと思います。

-- 
Sumito_Oda mailto:oda @ bst.jp


PHP-users メーリングリストの案内