June 16, 2003

MT + ApachePerlRun での問題

[ Movable Type ]

Apache::PerlRun で MT を動作させて、特に問題はなさそうだと思っていたんですがウェブサーバのエラーログに

[Mon Jun 16 02:42:32 2003] countdown.pl: Subroutine countdown redefined
at /hoge/foo/bar/mt/plugins/countdown.pl line 46.

なんて警告がが延々と出てました。mt.cgi を実行させる度に吐いているようです。メッセージだけから判断するとプラグインで定義されてるサブルーチンが複数回定義されてるってことなんですが、単なる CGI として動かしてるときは出ないメッセージなので、ちょっと厄介です。組み込んでるプラグインで定義されてるサブルーチンの数だけ、上記のメッセージが出てます。

mt.cgi の動作には問題ないですが、気持ち悪い。見たところ $MT_HOME/lib/MT.pm の 105 行目当たりで

my $plugin_dir = $cfg->PluginPath;
local *DH;
if (opendir DH, $plugin_dir) {
    my @p = readdir DH;
    for my $plugin (@p) {
        next if $plugin !~ /\.pl$/;
        $plugin = File::Spec->catfile($plugin_dir, $plugin);
        if ($plugin =~ /^([-\\\/\@\:\w\.\s]+)$/) {
            $plugin = $1;
        } else {
            die "Bad plugin filename '$plugin'";
        }
        eval { require $plugin };
        warn($@), next if $@;
    }
    closedir DH;
}

とプラグインのスクリプトを require しているのですが、この変が怪しいんだろうか。うーん。

Posted by naoya at June 16, 2003 02:51 AM | トラックバック (0)  b_entry.gif
トラックバック [0件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/200
コメント [2件]

こんにちは。
うちでもcountdown.pl使っているのですが、この記事を見て「もしかして?」と思いerror_logを見てみました。
すると違うエラーを吐いていました(涙

エラーは

"my" variable $until masks earlier declaration in same scope at /usr/local/apach
e/cgi-bin/naga/MT2/plugins/countdown.pl line 55.

というやつでした。

うちのcountdown.plはversion 1.2です。

というわけで気づかせていただいてありがとうございました。

[1] Posted by: nagasawa at June 16, 2003 05:38 PM [返信]

countdown.pl の警告は僕も出てました。同名のレキシカル変数が二回宣言されてましたね。

Apache::PerlRun のエラーはもう放置気味。(--;

[2] Posted by: naoya at June 17, 2003 09:59 PM [返信]