perl - 为什么我的 CGI 脚本提示 "Can' t locate CGI/Session.pm in @INC”?

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

**

  • .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
  }

启动apache服务器后,我打开页面,输入用户名demo和密码demo,然后点击按钮。

我收到以下错误:

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.

请帮我解决这个错误。

**

  • 编辑 1

**

安装 CGI-Session-4.42 后问题解决。

感谢大家的帮助。

最佳答案

您需要安装 CGI::Session。最好的方法是使用操作系统包管理器。在 Fedora/Redhat 或类似软件中,它将是 yum install perl-CGI-Session。在基于 Debian 的系统中,apt-get install libcgi-session-perl。如果您想使用 cpan shell 安装,请将整个错误日志粘贴到某处并在此处发布指向它的链接。

关于perl - 为什么我的 CGI 脚本提示 "Can' t locate CGI/Session.pm in @INC”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220638/

相关文章:

perl - 如何使用Test::More测试STDERR?

python - 让 Apache cgi 在 Python 中发送 json

python - 如何从 WSGI 处理程序启动 CGI 脚本?

javascript - Perl CGI,多个表单和多个提交按钮,在同一页面上执行操作

arrays - 如何检测数组中重复的代码引用?

perl - 如何检测 FTP 文件传输完成?

perl - 在 perl 脚本中格式化 localtime()

python - 如何使用 xampp 在 ubuntu 中运行 python cgi 脚本

apache - 什么是 CGI,什么是 CGI 脚本?

python - Web 服务器的 .cgi 问题