Domanda

Ho installato modulo CGI :: Session sul mio ospite con la creazione della directory perl moduli nel mio cgi-bin e quindi estrarre il modulo a quella directory così ho:

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/

In uno script io (questo si trova in 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');

Tutto funziona bene fino alla chiamata a scadenza. Quando ho messo la chiamata scade all'interno di un eval ottengo il seguente errore:

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 .)

Tutte le idee?

È stato utile?

Soluzione

CGI :: Session archivio di distribuzione non ha CGI :: Session :: File - è necessario utilizzare molto vecchia versione. Nella nuova versione, è necessario scrivere. "Driver: file" nella nuova chiamata (caso nota del 'f')

Se è necessario che la versione non aggiornata e non può installare nulla su hosting, installare quella versione di CGI :: Session a livello locale, e copiare "auto / CGI / Session /" directory da% Perl% / site / lib / a di hosting pure. Un'altra opzione è quella di fare make senza guscio CPAN e copiare che dir da blib / arch.

Altri suggerimenti

Credo che il problema risiede nella relativa pathing. Sembra lecito ritenere che lo script viene eseguito da Apache o un altro server web. In tal caso, ../perl-modules/ potrebbe essere un po 'ovunque.

Sul mio web server, la directory di lavoro corrente è /usr/local/apache22/, così ../perl-modules/ sarebbe risolvere a /usr/local/apache22/../perl-modules o /usr/local/perl-modules/. Per superare questo, io suggerirei di mettere un percorso assoluto in invece di un percorso relativo. Ad esempio:

use lib '/home/user105033/perl-modules/';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top