2010-02-08 4 views
1

J'ai un fichier html qui accepte et envoie le login et le mot de passe. Il est envoyé au fichier login.cgi.Pourquoi mon script CGI se plaint-il "Impossible de trouver CGI/Session.pm dans @INC"?

**

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

Après avoir démarré le serveur apache, j'ouvre la page et entrez le nom d'utilisateur et mot de passe démo démo et cliquez sur le bouton.

je reçois l'erreur suivante:

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.

S'il vous plaît, aidez-moi à résoudre cette erreur.

**

  • EDIT 1

**

Problème résolu après l'installation de CGI-session-4.42.

Merci à vous tous pour votre aide.

+4

Évidemment, vous n'avez pas installé CGI :: Session. Essayez 'cpan' depuis la ligne de commande et lancez' install CGI :: Session' dans le shell d'ouverture ... – Boldewyn

+0

J'ai essayé d'installer cpan, mais partout où la connexion ne se fait pas. En outre, je reçois ce qui suit à la fin: N'a pas pu extraire les modules/03modlist.data.gz Va écrire à /root/.cpan/Metadata Attention: Impossible d'installer Bundle :: CPAN, je ne sais pas ce que c'est . Essayez la commande i/Bundle :: CPAN/ pour trouver des objets avec des identifiants correspondants. CPAN> i/Bundle :: CPAN/ Aucun objet trouvé de tout type pour l'argument/Bundle :: CPAN/ CPAN>/Bundle :: CPAN/ Impossible de localiser la méthode objet "CPAN /" via paquet "/Bundle "(peut-être avez-vous oublié de charger"/Bundle "?) À /usr/lib/perl5/5.8.8/CPAN.pm ligne 201, ligne 3. – MalarN

Répondre

7

Vous devez installer CGI :: Session. Le meilleur moyen est d'utiliser votre gestionnaire de paquets OS. Dans Fedora/Redhat ou similaire, ce serait yum install perl-CGI-Session. Dans Debian, apt-get install libcgi-session-perl. Si vous voulez installer avec le shell cpan, collez un journal entier avec des erreurs et publiez le lien ici.

+0

J'ai essayé d'installer par "miam" mais obtenir l'erreur suivante: [root @ localhost /] # yum install perl-CGI-session Loading "installonlyn" plug-in Configuration de procédure d'installation Mise en place des dépôts Impossible de récupérer mirrorlist http://mirrors.fedoraproject.org/mirrorlist?repo=core-6&arch=i386 erreur était [Errno 4] IOError: Erreur: Impossible de trouver un baseurl valide pour repo: core – MalarN

+0

La partie clé semble être "IOError: ". Etes-vous sûr que la machine sur laquelle vous tentez cette opération dispose d'un accès Internet opérationnel? –

+0

Il est d'avoir un accès Internet – MalarN

Questions connexes