AN HTTPD ゲストブック/コメント集(2002年5月24日18:08)


いと gfh05223@nifty.com 2002/05/26 00:46

中田さん
php.ini では cgi.force_redirect を オフ にするのは自己責任で、
IISならオフにしても安心と書いてますね。ISAPIが安定して動けば
php.exeは使わなくて済みますから、問題にはならないのでしょうけど。

Googleでは以下のような情報がみつかりました。
http://www.php.net/release_4_1_2_win32.php
http://202.216.17.73/W2K_PHP_itxtj.htm
http://php.zyprexia.com/manual/ja/install.windows.php#install.windows.extensions

cgi.redirect_status_env など Webサーバ側でも対応が必要なのかな
とも思えますが、PHPのことはよく分かっていません。


中田昭雄 nakata@st.rim.or.jp 2002/05/25 17:53

いとさん、
なるほど、 register_globals = On とするのはセキュリティ上問題ありなのですね。

cgi.force_redirect = 1 の時に出るメッセージは出だしが "Security Alert!" ですが、こちらは 0 にして問題ないのでしょうか?
と思いつつ、私も、cgiforce_rediret = 0 にすればよい、と言ってしまっているのですけど。。


hiro nono@pal.hotcake.ne.jp 2002/05/25 11:34

中田さん いとさん
いとさんのご説明の通り、PHP4.2.1(php.exeを使用)での問題でした。PHPの仕様変更とは知りませんでした。
やはりデフォルトの設定を書き換えるのは問題アリそうなのでソースを変更する方向で行きたいと思います。
今回のこと大変勉強になりました。ありがとうございました。


いと gfh05223@nifty.com 2002/05/25 10:40

hiroさん

php.ini の中で register_globals = Off になっているからだと思います。
セキュリティ上、4.1.0 からデフォルトが On から Off に変わったようです。
On にすれば動くと思いますが、以下の説明などを読むとソースの変更を勧めています。
http://ns1.php.gr.jp/pipermail/php-users/2001-December/004262.html
http://ns1.php.gr.jp/pipermail/php-users/2002-April/006600.html

print($a); の前に $a = $_POST["a"]; を追加すればとりあえず動きました。


中田昭雄 nakata@st.rim.or.jp 2002/05/24 21:08

hiro さん、
POSTの件は、AN HTTPD のトレースログをとった場合、もちろんリクエスト(ボディ)に a=1 または a=2 がはいっていますよね(?)。
実行が php4isapi.dll あるいは php.exe のどちらなのかをお知らせください。


hiro nono@pal.hotcake.ne.jp 2002/05/24 19:33

まず自分の書き込みですが、全く環境に付いて触れていないというミスに気がつきましたので追加いたします。
AnHTTPDのバージョンは1.39f、OSはWin2000、他PHPの設定はいとさん作成の「AN HTTPDでPHPを動かす」を参考に設定しました。


hiro nono@pal.hotcake.ne.jp 2002/05/24 18:08

PHPのデバッグ用として使わせていただいています。
一通りの設定を行い、PHPのスクリプトの方は順調に動きました。
しかしPOST methodでのデータの受け渡しがどうしてもうまくいきません
サンプルに以下のようなファイルを作成してみたのですが、Linux環境下ではちゃんとした
結果を示しますが、An httpdですと最初のprint($a)を無視し、最後のelseまで処理が飛んでしまいました。おそらくデータが渡されていないものと推測しました。

この事について問題がある部分等お判りになりましたらご教授のほどよろしくお願いします。

出力側HTML 
<html>
<body>
<form method="post" action="te.php">
<input name="a" type="text" size="1">
<input type="submit" name="submit" value="送信">
</form>
</body>
</html>
受け手側PHP
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
print($a);
if($a=="1"){
echo"1";
}
elseif($a=="2"){
echo"2";
}
else echo"もう一度";
?>
</BODY>
</HTML>