[PHP-users 2228] Re: phpからcgiに処理を渡す方法
Osamu Shigematsu
php-users@php.gr.jp
Tue, 25 Sep 2001 14:25:23 +0900
重松です。
一言二言のほとんど内容のないやりとりを繰り返すと、だらだらとスレッドが続いて
しまいます。今回の質問は、単なる typo とか、勘違いとか、そういう次元の問題で
はないかと推測され、まこさんのデバッグにつきあわされている割に、本人の自助努
力が全く足りない、「うまく動かないからバグとってよ」という感じが強くします。
みなさん、再三、おっしゃっているように、もう少しご自身でご自身の問題を整理し
てみてはいかがですか? 送信する前に、せめてもう一度読み返して、十分情報が記載
されているのか確認してみてください。
良い回答を得るには、良い質問をしなければなりません。
とりあえず、
> まこ@はままつです。ブラウザから試したところ、Internal Server Errorが表
> 示されました。phpからやっていたときは、なにも処理を行わず終了してしまっ
> ていました。
では、情報量は限りなく 0 に近いですから。
たとえば、
<?php
if($a == $b){
header("Location:../cgi-bin/testdrv.cgi?total=$gokei&tori_id=$tori_id");
}
?>
というコードですが、まずは、ちゃんとリダイレクトしているのか、調べる必要があ
ります。
# : -- endif という書き方は好きでないので書き換えました。:-P
たとえば、http:// から始まるものに換えてみたら、という提案は、
もともと絶対パスで指定する必要があるので、ちゃんとリダイレクトできているか、
試してみてください、という意味でもあるんです。
それ以前に、論理式が真かどうか、真であることを期待するならば、
<?php
if($a == $b){
header("Location:../cgi-bin/testdrv.cgi?total=$gokei&tori_id=$tori_id");
}else{
die("a = $a b = $b");
}
?>
のようにして、確実に header() が実行されているか調べるべきですし、
実行されないならば、何故 $a と $b が == で等しくないのか、
値を調べてみるコードを挟むべきです。
つまり、どういう順番でコードが実行されているか、トレースして欲しいのです。
また、header() に渡す内容も、
<?php
if($a == $b){
$url = "../cgi-bin/testdrv.cgi?total=$gokei&tori_id=$tori_id";
header("Location: $url");
// ^ ここのスペースって要らないの?
}else{
die("a = $a b = $b");
}
?>
のように変数に入れ、表示してみるなどして、期待の値が確かに渡されているか、
確認してみるべきでしょう。
また、TCP ストリーム (サーバとブラウザのやりとりの様子) をキャプチャ (ダン
プ) することができるソフトもあります。具体的にどういうデータが流れているのか、
追いかけることができれば、http だとかの理解も深まります。
また、今回はこういう場での質問を行う際にも、実際にデータの流れを示すことがで
きるようになり、問題解決が容易になります。
こちらも挑戦してみてください。
# 私は MacOS ですので、Interarchy というソフトを使っています。
いずれにしても、状況を他人にキチンと説明できるように整理してみてください。
案外整理していると、解決することも多々あると思いますから。
このとき、
http://www.geocities.co.jp/SiliconValley/5656/
にある、巻末豪華付録の質問の仕方ひな形でも使ってみてください。
便利ですよ。私も、時々使います。:-)
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp