Apache 2 et perl

Bonjour a tous,
je doit realiser une page d’administration melant php / perl.

Est qu’il y a quel chose à modifier ou a installer sur apache 2 pour qu’il interpre le perl.??

MOn code PERL est integrer dans la page web en elle meme.

Merci d’avance pour vos réponses.

guigui69

re Bonjour A tous,
j’ai créé une page en php avec du code perl ( à l’interieur), mais j’ai un petit soucis. il me dit que la qu’il y a un problème avec la fonction open.


<html>
<head>
<title>Authentification</title>
<head>
<body>
<?
#!/usr/bin/perl -w

if(isset($_POST['login']))
{
        $login=$_POST['login'];
}

if(isset($_POST['MdP']))
{
        $mdp=$_POST['MdP'];
}

$fich3='/etc/passwd';
if ($login !="" or $mdp !="")
{
        open(LOG,$fich3) ;
        print("$fich3");
        @lignes = <LOG>;
        #Afficher la taille du tableau
        print scalar(@lignes)."\n";
        #Parcours linére des lignes du tableau
        foreach $ligne (@lignes) {
        chomp($ligne=$ligne);
        ($log, $id) = split(":", $ligne);
        print $log."\n";}

erreur: Fatal error Call to undefined function open()

ou est l’erreur dans mon code? ou bien comment definier cette fonction open

Merci d’avance.

guigui69

bonjour,
mais … <? #!/usr/bin/perl -w … tu mélanges du perl et du php là non ?

Salut la page en question est une page en php avec du Perl dedans.

Pourquoi ce n’est pas possible ?

bonjour,
ben le propre des balises <? ... ?> est de signifier que ce qui se trouve entre est du code php , si tu mets du perl , ça peut pas coller.
De même, mets du javascript, et ça n’ira pas mieux, style: <? ?> ne peut pas fonctionner,
‘l’astuce’ est de mettre echo ’'; Là oui, puisque c’est toujours du php qui insere du code javascript à la volée dans la page du navigateur.

Je ne pense pas qu’un echo ‘#!/usr/bin/perl -w’; et ainsi de suite pour chaque ligne de code perl fonctionnera. Il y a une manière de procéder, qui est le recours aux scripts cgi, en configurant le répertoire cgi-bin dans le fichier de conf d’apache, et de mettre le code perl dans un fichier de ce répertoire cgi-bin, en l’appelant à partir de ta page php comme ça:
include ‘/cgi-bin/tonscriptperl.cgi’;

cf. http://forum.debian-fr.org/viewtopic.php?t=6929&highlight=cgibin

tu colle ton script perl dans un répertoire cgi-bin et tu appelle ton script directement avec php sans t’embêter a laisser le code perl dans une page php

plus d’info voir par
N’oublie pas de rendre le répertoire lisible par apache et ton fichier perl exécutable.

Question con tu as bien sur perl d’installé?

Merci pour vos réponses.

Je suis repartit depuis le debut et la quand je fait 172.16.0.70/essai.pl

il me dit:(443)

Forbidden

You don't have permission to access /essai.pl on this server.
  • Apache2 est installé.
  • Perl ,libapache-modperl2, php4 mysql-server tous installé.
  • Distribution a jour.
  • Rajout dans apache2.conf de AddHandler cgi-script .pl
  • Le script testé ce trouve sous /var/www/essai.pl
  • Droit Modifier en 777 (pour tester)

Mais ca ne change rien j’ai tjr autorisation refusé :frowning:.

Il doit me manquer un petit truc mais je sais pas quoi.
Merci d’avance pour l’aide

guigui69

Je crois pas que ça suffise, il y a aussi la directive ScriptAlias /cgi-bin/ à adapter au répertoire qui contient des scripts cgi que tu veux voir ton apache exécuter … (si si, c’est du français … enfin … je crois).

Merci j’ai deja rajouter ceci et ca ne change rien.

Dans ce cas, peux tu montrer la ligne en question ?


ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "usr/lib/cgi-bin/">
   SetHandler perl-script
        PerlResponseHandler ModPerl::Registry
        PerlOptions +ParseHeaders
        Options +ExecCGI
        Order allow,deny
        Allow From All
</Directory>

Alors docteur c’est grave :smiley:

Oui ben voilà … tu n’as rien modifié, c’est la valeur par défaut …
Donc, tu as mis tes .pl dans /usr/lib/cgi-bin ? Sinon ça peut pas marcher.
NB: le mieux, c’est encore de créer un répertoire cgi-bin dans /home, et de mettre la valeur à :

ScriptAlias /cgi-bin/ /home/cgi-bin/ et de placer tes .pl dans /home/cgi-bin …

ps: c’est bénin, vous prendrez 1 heure de lecture chaque soir de documentation apache, et deux verres de googueulisation matin, midi et soir … :wink: