为什么我的CGI脚本抱怨"无法在@INC中找到CGI/Session.pm"?

Mal*_*arN 1 perl cgi

我有一个html文件,它将接受并发送登录名和密码.它被发送到login.cgi文件.

**

  • html文件

**

<form method="POST" action="login.pl">
<table >
<tr>
    <td>Username </td>
    <td bgcolor="lightgrey"><input type="text" name="usr" size="20"></td>
</tr>
<tr>
    <td>Password </td> 
    <td bgcolor="lightgrey"><input type="password" name="pwd" size="20"></td>
</tr>
<tr>
    <td><input type="submit" id ="Login" value="Login" name="login"/> </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

**

  • 特等

**

#!/usr/bin/perl

  # login.pl
  use CGI;
  use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
  use CGI::Session ( '-ip_match' );

  $q = new CGI;

  $usr = $q->param('usr');
  $pwd = $q->param('pwd');

  if($usr ne '')
  {
      # process the form
      if($usr eq "demo" and $pwd eq "demo")
      {
          $session = new CGI::Session();
          print $session->header(-location=>'home.html');
      }
      else
      {
          print $q->header(-type=>"text/html",-location=>"LoginHtml.html");
      }
  }
  elsif($q->param('action') eq 'logout')
  {
      $session = CGI::Session->load() or die CGI::Session->errstr;
      $session->delete();
      print $session->header(-location=>'LoginHtml.html');
  }
  else
  {
      print $q->header;
      print <
          <form method="post">
          Username: <input type="text" name="usr">

          Password: <input type="password" name="pwd">


          <input type="submit">
          </form>
  HTML
  }
Run Code Online (Sandbox Code Playgroud)

启动apache服务器后,我打开页面并输入用户名作为demo和密码作为demo,然后单击按钮.

我收到以下错误:

软件错误:

无法在@INC中找到CGI/Session.pm(@INC包含:/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/ i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5/usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8/usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5/usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/ i386-linux-thread-multi /usr/lib/perl5/5.8.8.)at /var/www/cgi-bin/login.pl第6行.BEGIN失败 - 编译在/ var/www/cgi-bin中止/login.pl第6行.

如需帮助,请发送邮件给网站管理员(root @ localhost),提供此错误消息以及错误的时间和日期.

请帮我解决这个错误.

**

  • 编辑1

**

安装CGI-Session-4.42后问题已解决.

感谢大家,感谢您的帮助.

Ale*_*nii 9

您需要安装CGI :: Session.最好的方法是使用您的OS包管理器.在Fedora/Redhat或类似的情况下yum install perl-CGI-Session.在Debian中,apt-get install libcgi-session-perl.如果要使用cpan shell进行安装,请在整个日志中粘贴错误并在此处发布链接.