トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS-サポート掲示板/409

ページの作成や編集にはユーザ登録が必要です。

 ログアウトすると Software error - あぶらや (2005年06月03日 18時08分38秒)

ログアウトしたときに、以下のSoftware errorが出てしまいます。perlは初心者でよくわからないのですが、このerrorが出ないようにする方法をご教授願います。

Software error:could not flush: Couldn't unlink log\cgisess_a2741ab524622e4a4052bc092c6f4546: The system cannot find the file specified. at lib/Wiki.pm line 1674

ログイン中、log\cgisess_a2741ab524622e4a4052bc092c6f4546 は存在していました。ログアウト後は、消えていました。

環境は、Windows2000+httpd、perlは v5.6.0 です。FreeStyleWikiは 3.5.8 です。試しに 3.5.0 でしても同じでした。

  • CGI::Sessionの次の版でbugfixされてました。対処的には「plugin/admin/Login.pm」の105行目「$session->flush();」をコメントアウトする(「# $session->flush();」にする)かなと思います。 - typer (2005年06月03日 21時03分18秒)
  • 原因はログアウトの際にCGI::Sessionオブジェクト$sessionのdeleteメソッドが呼ばれ、その後すぐflushが呼ばれてセッションファイルが実際に消されているのですが、この後cgi終了時に$sessionが破棄されるためデストラクタであるDESTROY内で再度flushが呼ばれてすでに消したセッションファイルを消そうとして失敗するため、上記メッセージでcroakして発生します。 - typer (2005年06月03日 21時34分06秒)
  • 問題はflushを2度呼んだだけでcroakするCGI::Sessionと、croakされてもログにすら残らない手元の環境(FreeBSD 5-stable, Perl 5.8.6ですが、おそらく他の多くの環境も?)ですかね。どっちかというとCGI::Sessionのバグの気がします。 - typer (2005年06月03日 21時49分37秒)
  • CGI::Sessionの次の版でbugfixされてました。lib/CGI/Session.pmの432行目「$self->{_STATUS} = SYNCED;」を3行下、「return 1;」の上に移動すれば良いようです。 - typer (2005年06月03日 22時32分07秒)
  • typerさんありがとうございます。Software errorでないようになりました。 - あぶらや (2005年06月07日 09時15分15秒)
お名前: コメント:

最終更新時間:2005年06月07日 09時15分15秒