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

时间:2010-02-08 09:46:31

标签: 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>

**

  • 特等

**

#!/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
  }

启动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后问题已解决。

感谢大家的帮助。

1 个答案:

答案 0 :(得分:8)

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