-1

cgi-binにperl-modulesディレクトリを作成し、モジュールをそのディレクトリに抽出することで、CGI::Sessionモジュールをホストにインストールしました。

D: cgi-bin/perl-modules/CGI/
F: cgi-bin/perl-modules/CGI/Session.pm
D: cgi-bin/perl-modules/CGI/Session/
F: cgi-bin/perl-modules/CGI/Session/File.pm
D: cgi-bin/perl-modules/CGI/Session/ID/
D: cgi-bin/perl-modules/CGI/Session/Searialize/

私が行うスクリプト(これはcgi-bin / test /にあります):

     use lib '../perl-modules';
     use CGI::Session;
     $session = new CGI::Session (
                "driver:File", 
                undef,
                {Directory => '/tmp'}
            );

$session->param('_logged_in', 1);
$session->param('_remote_ua', $ENV{'HTTP_USER_AGENT'});
$session->expire('+2hr');

呼び出しが期限切れになるまで、すべてが正常に機能します。期限切れの呼び出しをeval内に置くと、次のエラーが発生します。

Can't locate auto/CGI/Session/File/expire.al in @INC (@INC contains: ../perl-modules /usr/lib/perl5/5.8.7/i686-linux /usr/lib/perl5/5.8.7 /usr/lib/perl5/site_perl/5.8.7/i686-linux /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.7/i686-linux /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl .)

何か案は?

4

2 に答える 2

1

最新のCGI::Session配布アーカイブにはCGI::Session::Fileがありません-非常に古いバージョンを使用している必要があります。新しいバージョンでは、新しい呼び出しで「driver:file」を記述する必要があります(「f」の場合に注意してください)。

その古いバージョンが必要で、ホスティングに何もインストールできない場合は、そのバージョンのCGI :: Sessionをローカルにインストールし、「auto / CGI / Session /」ディレクトリを%Perl%/ site /lib/からホスティングにもコピーします。別のオプションは、makecpanシェルなしで実行し、そのdirをblib/archからコピーすることです。

于 2010-02-09T18:47:15.277 に答える
1

あなたの問題は相対的な経路にあると思います。スクリプトがApacheまたは別のWebサーバーから実行されていると想定するのは安全のようです。その場合、../perl-modules/ほぼどこにでもある可能性があります。

私のWebサーバーでは、現在の作業ディレクトリは/usr/local/apache22/、であるため、、または../perl-modules/に解決されます。これを克服するために、相対パスの代わりに絶対パスを入れることをお勧めします。例えば:/usr/local/apache22/../perl-modules/usr/local/perl-modules/

use lib '/home/user105033/perl-modules/';
于 2010-02-09T19:26:11.337 に答える