私のCGIが動かないのです
[上に]
[前に]
[次に]
あき
1999/10/04(月) 01:41:40
非常にずうずうしいお願いで申し訳ないのですが、私の作っている
CGIのどこがいけないのか教えてください。
$new_tatemsg = "$name<>$email<>$url<>$date<>$subj\n";
@tatelines = "";
unshift(@tatelines,$new_tatemsg);
open(TATEOUT,">>$tatefile") || &error("OPEN エラー");
print TATEOUT @tatelines;
close(TATEOUT);
このCGIを実行したのですが、$tatefileで示すファイルに何も書き込まれません。
このファイルはデータ0件で作ってあり、OPENエラーのメッセージも表示されていません。
@tatelinesに書き込みたい内容がセットされていることは確認しました。
以上の点から書き込みのprint文で失敗していると思っているのですが、原因がわかりません。
また、現在0件なので追加書き出しではなく">$tatefile"にしてみたり、
とにかく書き出しできるかprint TATEOUT "aaa\n";に変えてみたりと
いろいろやってみましたが、どうしても書き出しできません。
大変申し訳ないのですが、どこが間違っているか、あるいは他にも確認しておくべきこと
などありましたら教えてください。
よろしくお願いいたします。
@たて?
1999/10/04(月) 06:51:49
http://www.tohoho-web.com/wwwperl3.htm#ForArray
を参考にすると、
print TATEOUT @tatelines;
を
for $a (@tatelines) {
print (TATEOUT "$a");
}
でよろしいのではないでしょうか?
神無月
1999/10/04(月) 13:56:51
サーバがUNIXならば、フォルダやファイルのパーミッションは確認されたでしょうか?
墟露ちゃん
1999/10/04(月) 14:56:51
対象のファイルを消して実行すると
ファイルができてる(サイズ0でも):OPENは正常
ファイルがない :OPENがダメ
逆にファイルに何件か書いておいて、
読めるか(内容をprint)を試すと、
ちゃんとそのファイルを見ているかがわかります。
ついでにハンドル名ももう一度チェックしてください。
まあエラー処理が書いてあるから、
オープンがらみではないと思いますけど…
では、
内容が空なのは@tatelinesに何も入ってないからだとすると、
print TATEOUT ”<”.@tatelines.”>¥n”;
とすると@tatelinesが<>に挟まれるので中身が有るか解ります、
あと、どう見ても全文ではないので、
ここに書いてない部分にエラーが有るかもしれませんよ…
あき
1999/10/04(月) 15:36:28
[[解決]]
皆様、お時間をとらせて本当に申し訳ありませんでした。
どうぞお許しください。
一晩寝たら、私のプロヴァイダは
$tatefile = $ENV{'HOME'} . "/cgi-bin/" . $tatefile;
にしなければファイルにアクセスできないのを思い出しました。
本当にありがとうございました。
[上に]
[前に]
[次に]