たろマーク (はてなブックマーク)
■ CGI::Application::Dispatch を mod_perl 下で動かした時に warning が出た
タイトル長え('A`)
apache/mod_perl 2系には関係なさげ。
- apache 1.3.33
- mod_perl 1.29
- perl 5.8.0
- CGI::Application::Dispatch 1.04
で、PerlHandler に Apache::Registry 使った環境で動かしたら、error log に以下のような warning が出た。
Dispatch.pm: Use of uninitialized value in numeric eq (==) at /usr/lib/perl5/site_perl/5.8.0/CGI/Application/Dispatch.pm line 12.
httpd.conf に下記の行を設定して回避。
PerlSetEnv MOD_PERL_API_VERSION 1
設定する値は2以外だったらなんでもいいんだと思うけど。
そもそも、PerlHandler に CGI::Application::Dispatch 使えって話かもしれませんが、ちょっと自分の書いたスクリプトに問題があったので。
やっぱり、相対指定は上手く外していこう(←ダメだった部分
ちなみに、CGI::Application::Dispatch の patch 作ってみた。
*** Dispatch.pm.org 2005-09-07 20:11:13.000000000 +0900
--- Dispatch.pm 2005-09-07 20:13:32.000000000 +0900
***************
*** 9,15 ****
BEGIN {
if( $ENV{MOD_PERL} ) {
! $MP2 = $ENV{MOD_PERL_API_VERSION} == 2;
if( $MP2 ) {
require Apache2::Const;
require Apache2::RequestUtil;
--- 9,15 ----
BEGIN {
if( $ENV{MOD_PERL} ) {
! if ( exists $ENV{MOD_PERL_API_VERSION} ) { $MP2 = ( $ENV{MOD_PERL_API_VERSION} == 2 ) }
if( $MP2 ) {
require Apache2::Const;
require Apache2::RequestUtil;
まだ、mod_perl に慣れてないというか知識不足があるんだけども、mod_perl 1 系では、$ENV{MOD_PERL_API_VERSION} がセットされないっぽい。







コメント
# 海賊たろ
(2005年09月07日 20:36)
何で、exists 使ってるんだろ。無くてもいけるな orz