Что не так с моей установкой CGI :: Session? - PullRequest
0 голосов
/ 09 февраля 2010

Я установил модуль CGI :: Session на моем хосте, создав каталог perl-modules в моем cgi-bin, а затем распаковав модуль в этот каталог, чтобы у меня было:

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');

Все работает нормально, пока не истечет срок звонка. Когда я помещаю вызов expire в 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 .)

Есть идеи?

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Я думаю, что ваша проблема заключается в относительном пути. Кажется безопасным предположить, что ваш скрипт выполняется с Apache или другого веб-сервера. В этом случае ../perl-modules/ может быть где угодно.

На моем веб-сервере текущим рабочим каталогом является /usr/local/apache22/, поэтому ../perl-modules/ будет преобразовано в /usr/local/apache22/../perl-modules или /usr/local/perl-modules/. Чтобы преодолеть это, я бы предложил поставить абсолютный путь вместо относительного. Например:

use lib '/home/user105033/perl-modules/';
1 голос
/ 09 февраля 2010

Последний CGI :: Распределение сеансов В архиве нет CGI :: Session :: File - вы должны использовать очень старую версию. В новой версии вам нужно написать «драйвер: файл» в новом вызове (обратите внимание на регистр 'f').

Если вам нужна эта устаревшая версия и вы не можете ничего установить на хостинге, установите эту версию CGI :: Session локально и скопируйте каталог «auto / CGI / Session /» из% Perl% / site / lib / на хостинг тоже. Другой вариант - сделать make без оболочки cpan и скопировать этот каталог из blib / arch.

...