新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: timelocal.plをコメントアウトしてたのですか (^^;
Date: 1998/01/29 22:23:00
Reference: mesh.forum.3/00049

1月29日に、SCENEさんは書きました。

>>おや、contents.cgi と forum.pl をいじっていますね。 変更点はどこですか?
>forum.plの方は、14行目をコメントにしました。
>
>require "$CGIPATH/site.pl";
>require "$CGIPATH/http.pl";
>#require "timelocal.pl";
>
>この理由は、コメントにしないと、
>yanohara@sse[17] ./contents.cgi
>Can't locate timelocal.pl in @INC at /usr/local/www/cgi-bin/forum/forum.pl line14.
>と言われるからです。
>
あれれ、timelocal.plのインクルードをコメントアウトしてたのですか。(^^;;
では、エラーになるわけですね。

ただし、timelocal.plのコメントアウトなら、別のブラウザから読まなくても
メニューや一覧の有効時間を過ぎてからの再読み込みでエラーになるはずですし、
別のブラウザでも一度も会議室を読んだことのないブラウザやキャッシュを
クリアした後ならエラーにならないはずです。

偶々投稿直後に、以前に会議室を正常に読んだことがありキャッシュに入っている
ブラウザを使ってアクセスしたからエラーになっただけで、投稿直後でなくても
そのブラウザで読めばエラーになりますね、多分。(^^;

# 2番目のアクセスだと出来ない、と言う一見面白そうな現象にとらわれてしまいましたね。

## timelocal.plが無いとブラウザの通知してきた最終修正時間を内部表現の
## 時間に直すところでエラーになるので、ブラウザが最終修正時間を知っている、
## つまりペーヂがキャッシュに入っている時にアクセスするとエラーになるわけです。

さて、単に require "timelocal.pl"; するとエラーになると言うことは
perlの標準ライブラリ群のインストールにしくじっていると言うことですから、
もしもSCENEさんがサーヴァの管理者ならその辺を修正しておくことをお勧めします。
# まあ、インストールし直すのが一番簡単でしょうか。

もしも、サーヴァに手が付けられないのなら、timelocal.plをうぇぶ会議室の
スクリプトディレクトリに持って来て、

require "$CGIPATH/timelocal.pl";

にしてしまえば良いです。

だけど、

yanohara@sse[1] pwd
/usr/share/perl
yanohara@sse[2] ll timelocal*
-r--r--r--  1 bin  bin  2591 Mar 25  1997 timelocal.pl

と言うのはホントにperl5.003に付いてきたライブラリですか?
手元に残っているのを見ると、

$ pwd  
/usr/local/lib/perl      ← perl4.036用
$ ll timelocal.pl
-rw-r--r--   1 nir      hyper       2581  6月 24日 1996年 timelocal.pl
$ pwd
/usr/local/lib/perl5.003 ← perl5.003用
$ ll timelocal.pl
-rw-r--r--   1 nir      hyper       3536  1月 25日 1996年 timelocal.pl
$ pwd
/usr/local/lib/perl5     ← perl5.004用のTime::Localの呼び出し
$ ll timelocal.pl
-rw-r--r--   1 nir      hyper        690  7月  5日 1997年 timelocal.pl

と言うことでサイズが合わないですが...
# まあ、うちのも古いライブラリは単にとってあっただけで使ってはいないから
# 本物かどうかはチョット自信ないですが。(^^;