CGI-BBS > SO−HO > フリーマーケット > 入札終了メールが送れずシステムエラー(007)


カレッヂ
カレッヂ


質問者 にゃむにゃむ  投稿日 4/13(日) 20:41:29
フリーマーケットで、
入札終了メールが送れずのシステムエラー(007)になってしまいます。
その後更新するとメールが送られているので、
入札終了のお知らせが通常より遅れてしまいます。

私以外にもこういった症状の方はいらっしゃらないでしょうか?

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:(未選択)
エディタ:
FTPソフト:
サーバ移転:していない
改造:している 改造前不動
CGI習熟度:advanced

回答者 呑兵衛@大阪  [削除]  投稿日 4/14(月) 20:54:44
> システムエラー(007)
これはプロバイダーによって変わるシグナルですので、プロバイダーに尋ねてください。
サーバーの設定はすべてプロバイダーの意思で変更可能です。
質問者 にゃむにゃむ  [削除]  投稿日 4/14(月) 22:22:18
早速のご解答有難う御座います。

そうなんですか・・・

つまり、もしかしたらプロバイダーを換えない限り、
治らないかもしれない訳ですよね・・・

了解致しました、十分考えた上で最善の判断を取りたいと思います。
質問者 にゃむにゃむ  [削除]  投稿日 6/21(土) 21:35:55
こんばんは、

その後プロバイダを変更しましたが、
一向に変化はありません。

私以外の方で、このフリーマーケットCGIを利用しているサイトを巡回していたところ、
同様な現象に対面したので、もしプロバイダが原因であれば、
かなり広域なのでは・・

ちなみに私はhttp://www.1-man.net/を利用しているのですが・・・

で、システムエラー(007)と表示された後に更新すると、
その更新した時間にメールが送信されているので、
else { &error2("システムエラー(007)","$fnumの入札終了処理に失敗しました."); }
は削除しても良いのでしょうか?
回答者 呑兵衛@大阪  [削除]  投稿日 6/22(日) 21:46:14
システムエラー(007)
$fnumの入札終了処理に失敗しました.

エラーメッセージは上記のように表示されますが、このとき $fnum は数値が入ると思います。
そのようになっていますでしょうか?
質問者 にゃむにゃむ  [削除]  投稿日 6/26(木) 05:29:31
はい、ちゃんと終了した商品の出品番号が記載されています。
回答者 呑兵衛@大阪  [削除]  投稿日 6/28(土) 11:28:11
auction.cgi には
&error2("システムエラー(007)","$fnumの入札終了処理に失敗しました.");
が2行あります。204行目付近と321行目付近です。
どちらがエラーを返すのかを、それぞれの行のエラー行に通し番号をつけて
どちらが反応しているか確認してみてください。
それから、エラー時にサーバーにFTPして、$base_dir$directory のパーミッションの確認
をしてみてください。
サーバーがファイルまたはディレクトリの所有者を nobody の権限で操作をしている
可能性があります。この場合ですと書き込み権限がないことになりますが、当然ですが、
 rmdir 命令も働かずエラーが返るはずなのですが、、、。
もし$base_dir$directoryのパーミッションが 755、777、707以外でしたら 
if (rename("$base_dir$directory","$base_dir$fnum\.0"))
の直前で
chmod(0777,"$base_dir$directory");
を追記して動作を試みてください。
質問者 にゃむにゃむ  [削除]  投稿日 6/29(日) 19:57:55
確認したところ、
321行目の物が反応していたようです。

そして、パーミッションは777でしたが、
$base_dir$directoryの中に
index.cgi以外にstop.cgiという空ファイルが作成されていました。

どうすればいいでしょうか?
どうぞご教授ください。御願い致します。
回答者 呑兵衛@大阪  [削除]  投稿日 6/30(月) 19:26:59
システムコールでエラーが返される、その再現がどうしてもできません。
先にお知らせした通し番号を $! にして、そこに代入される数値を拾ってみてください。
入札があり、落札されるとすべて tender.cgi で処理され、内容がメール送信される仕組みで
auction.cgi は出品一覧に戻るとき実行されるようです。
どのプロセス時にそうなるのか具体的な実行過程をお知らせください。
質問者 にゃむにゃむ  [削除]  投稿日 6/30(月) 22:26:35
まず、$iには「No such file or directory 」と代入されていました。

出品し、入札せずに(入札した場合は知りません)入札期限が切れた後に
出品一覧(auction.cgi)にアクセスすると、
今までお話してきた通りの結果になります。

ただ、私のは改造してあるところがいくつかあるので、
そのせいだと思ったのですが、
改造をまったくしていないプログラムで試したところ、
同様とまではいかずとも、入札期限が切れた直後にメールが送信されることはなく、
やはり入札期限が切れた後にアクセスすると送信されるようになっていました。
回答者 呑兵衛@大阪  [削除]  投稿日 7/4(金) 06:42:52
いろいろ試したのですが、エラーの再現ができません。
当然ながら最新版のバージョンです。
エラー出力行を
&error2("システムエラー(007)","$fnumの入札終了処理に失敗しました.","@NOW","@NEW"); }
に代え、
auction.cgi を呼び出した時の画面右肩に現れる時間表示が現在時刻であるかどうか確認して下さい。
@NOW には、 ***.1 のディレクトリ名 @NEW にも ***.1 のディレクトリ名が配列で代入されているはずで、
@NEW のディレクトリ名が rename されるディレクトリ $fnumと同一でなければなりません。
結果報告して下さい。 
質問者 にゃむにゃむ  [削除]  投稿日 7/6(日) 13:21:28
試したところ、

1057461075の入札終了処理に失敗しました. 
@NOWが、1057461075.1 1057987912.1 1057988281.1 
@NEWが、1057461075.1 1057987912.1 1057988281.1 
と代入されていました。

時間表示はキチンと現在時刻になっていました。
回答者 呑兵衛@大阪  [削除]  投稿日 7/6(日) 21:43:33
とりあえずの応急処置ですが、
else { &error2("システムエラー(007)","$fnumの入札終了処理に失敗しました."); }
を
else { print "Location: http://ドメイン&パス/auction.cgi\n\n"; }
としておいて下さい。
auction.cgi tender.cgi の改造をしていない状態で、当方ではエラーが発生しません。
あれこれ原因を探っていますが、どの仮説もプログラム全体では矛盾します。
もう少し調べてみますが、もしどなたか気づかれた方がおられたらHELPです。
質問者 にゃむにゃむ  [削除]  投稿日 7/6(日) 21:48:27
了解しました、
有難う御座います。
質問者 にゃむにゃむ  [削除]  投稿日 8/27(水) 03:48:59
お久しぶりです

auction.cgiの改造は、外装とCOOKIE読み込みだけなんですが、
regist.cgiを改造して、
./data/出品番号/index.cgi
に2項目追加したのですが、
これは今回のエラーに何か関係あるのでしょうか?


改造後のサポートまでしていただき、
誠に有難う御座います。

返信(回答)する

 


Web裏技