2010-02-08 58 views
1

我有一個html文件,它將接受併發送登錄名和密碼。它被髮送到文件login.cgi。爲什麼我的CGI腳本抱怨「在@INC中找不到CGI/Session.pm」?

**

  • 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後,我打開網頁,輸入用戶名作爲演示和密碼作爲演示,並單擊按鈕。

我得到以下錯誤:

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 ([email protected]), giving this error message and the time and date of the error.

請幫我解決這個錯誤。安裝CGI-會話4.42後

**

  • 編輯1

**

問題解決。

感謝大家,感謝您的幫助。

+4

顯然你沒有安裝CGI :: Session。從命令行嘗試'cpan'並在開始的shell中運行'install CGI :: Session' ... – Boldewyn 2010-02-08 09:51:05

+0

我試圖安裝cpan,但是每個連接都沒有發生。另外,我在最後得到以下內容: 無法獲取模塊/ 03modlist.data.gz 要寫入/root/.cpan/Metadata 警告:無法安裝Bundle :: CPAN,不知道它是什麼。 嘗試命令 i/Bundle :: CPAN/ 查找具有匹配標識符的對象。 CPAN> I /捆綁:: CPAN/ 未找到的任何類型的用於參數/捆綁:: CPAN/ CPAN對象> /捆綁:: CPAN/ 無法找到對象的方法 「CPAN /」 通過包「/Bundle「(也許你忘了加載」/ Bundle「?)在/usr/lib/perl5/5.8.8/CPAN.pm 201行,第3行。 – MalarN 2010-02-08 10:41:25

回答

7

您需要安裝CGI :: Session。最好的方法是使用你的OS包管理器。在Fedora/Redhat或類似的,它將是yum install perl-CGI-Session。以Debian爲基礎,apt-get install libcgi-session-perl。如果你想用cpan shell進行安裝,請粘貼一些有錯誤的日誌並在這裏發佈鏈接。

+0

我試圖通過「蔭」來安裝,但得到以下錯誤: [根@本地/]#百勝安裝perl-CGI-會議 加載「installonlyn」插件 設置安裝過程 設置存儲庫 無法檢索mirrorlist http://mirrors.fedoraproject.org/mirrorlist?repo=core-6&arch=i386錯誤是 [Errno 4] IO錯誤: 錯誤:無法找到有效的基地址回購:核心 – MalarN 2010-02-08 11:16:29

+0

關鍵部分看起來是「IOError:」。你確定你正在嘗試使用的機器是否可以上網嗎? – 2010-02-08 11:30:20

+0

正在上網 – MalarN 2010-02-08 12:17:33

相關問題