开发者

Why does my CGI script complain "Can't locate CGI/Session.pm in @INC"? [duplicate]

This question already has answers here: What's the easiest way to install a missing Perl module? (24 answers) Closed 7 years ago.

I am having a html file which will accept and send the login and password. It is sent to the file login.cgi.

**

  • html file

**

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

**

  • .pl

**

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

After starting the apache server, i open the page and enter the username as demo and password as demo and click on the but开发者_StackOverflow中文版ton.

I get the following error:

Software error:

Can't locate CGI/Session.pm in @INC (@INC contains: /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 line 6. BEGIN failed--compilation aborted at /var/www/cgi-bin/login.pl line 6.

For help, please send mail to the webmaster (root@localhost), giving this error message and the time and date of the error.

Please help me out to resolve this error.

**

  • EDIT 1

**

Problem resolved after installing CGI-Session-4.42.

Thanks to all of you, for your help.


You need to install CGI::Session. Best way is to use your OS package manager. In Fedora/Redhat or similar it would be yum install perl-CGI-Session. In Debian-based, apt-get install libcgi-session-perl. If you want to install with cpan shell, paste somewhere whole log with errors and publish link to it here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜