Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 什么';我的CGI::会话安装有什么问题?_Perl_Perl Module - Fatal编程技术网

Perl 什么';我的CGI::会话安装有什么问题?

Perl 什么';我的CGI::会话安装有什么问题?,perl,perl-module,Perl,Perl Module,我在主机上安装了CGI::Session module,方法是在我的CGI bin中创建perl modules目录,然后将该模块解压缩到该目录,因此我有: 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-module

我在主机上安装了CGI::Session module,方法是在我的CGI bin中创建perl modules目录,然后将该模块解压缩到该目录,因此我有:

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/):

在通话结束前一切正常。当我将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 .)
有什么想法吗?

最新的存档文件没有CGI::Session::File-您必须使用非常旧的版本。在新版本中,您需要在新调用中写入“driver:file”(注意“f”的大小写)


如果您需要该过时版本,并且无法在主机上安装任何内容,请在本地安装该版本的CGI::Session,并将“auto/CGI/Session/”目录从%Perl%/site/lib/复制到主机。另一种选择是在不使用CPANshell的情况下进行
make
,并从blib/arch复制该目录。

我认为您的问题在于相对路径。假设您的脚本是从Apache或其他web服务器执行的,这似乎是安全的。在这种情况下,
。/perl模块/
几乎可以在任何地方

在我的web服务器上,当前的工作目录是
/usr/local/apache22/
,因此
/perl modules/
将解析为
/usr/local/apache22/./perl modules
,或
/usr/local/perl modules/
。为了克服这个问题,我建议使用绝对路径而不是相对路径。例如:

use lib '/home/user105033/perl-modules/';

旧的CGI::Session使用自动加载,因此这不是路径的问题。只是认为这可能与此有关,因为错误前面有一个奇怪的
auto/
。不要通过解压缩模块来安装模块。有时他们需要做一些事情来设置要安装的文件。使用INSTALL_BASE或--INSTALL_BASE参数告诉发行版将文件放在何处。
use lib '/home/user105033/perl-modules/';