IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

script cgi perl ne s execute pas


Sujet :

Web Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut script cgi perl ne s execute pas
    Bonjour à tous,

    Je souhaite avoir votre avis sur un comportement que je ne m'explique pas.
    J'ai installé, sur Ubuntu 10.4, un serveur apache avec une base mysql 5.1 ainsu que perl 5.10.1
    Je souhaite exécuter des scripts cgi en perl qui iront récupérer des données dans ma base mysql.

    Mon premier script cgi ne fait que s'afficher à l'appel depuis un navigateur au lieu de s'exécuter.
    Voici son contenu :

    root@papajm-desktop:/var/www# cat testperl.cgi

    #!/usr/bin/perl

    print "Content-type: text/html\n\n";

    print "Hello, world!\n";
    Voici ce qui s'affiche dans le navigateur :
    #!/usr/bin/perl

    print "Content-type: text/html\n\n";

    print "Hello, world!\n";

    Il est sous /var/www en droits 755

    Voici la partie cgi de mon apache2.conf :
    ScriptAlias /cgi-bin/ "/var/www/"
    <Directory "/var/www/">
    AllowOverride All
    Options ExecCGI
    Order allow,deny
    Allow from all
    </Directory>
    Dois-je ajouter une ligne dans le apache2.conf pour que l'extension cgi soit prise en compte ?

    Je voulais créer un fichier .htaccess sous /var/www mais j'ai lu que cela n'était pas conseillé et que le apache2.conf suffisait.

    Merci pour votre aide.

    Theophanie77460

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut ne marche toujours pas
    J'ai essayé ceci, mais cela ne marche toujours pas ...

    Dans mon apache2.conf, j'ai indiqué :

    soit

    ScriptAlias /cgi-bin/ "/var/www/"
    <Directory "/var/www/">
    AllowOverride All
    Options ExecCGI Order allow,deny
    Allow from all
    </Directory>
    soit

    ScriptAlias /cgi-bin/ "/var/www/"
    <Directory "/etc/apache2/cgi-bin/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    </Directory>
    Cela donne la même chose : rien ne s'exécute mais le perl s'affiche tout simplement.

    Si j'ai bien compris, seule la ligne ScriptAlias est importante.
    Si je ne précise pas de pavé "Directory", apache prendra t-il des valeurs par défaut ?

    J'ai aussi essayé sans Directory, idem.

    Un complément :
    1)shebang de mon perl :
    #!/usr/bin/perl
    2)chemin du perl :

    root@papajm-desktop:/var/www# whereis perl
    perl: /usr/bin/perl /etc/perl /usr/lib/perl /usr/share/perl /usr/share/man/man1/perl.1.gz
    Il me manque quelque chose ...
    Au passage, je ne retrouve pas le chemin /var/www dans mon apache2.conf.
    S'agit-il d'un chemin par défaut d'apache ?

    Merci

    Theophanie77460

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bon, où se trouvent tes programmes perl (.pl ou .cgi) ? Dans quel répertoire ?
    As tu un répertoire /usr/lib/cgi-bin ?
    Quel Linux utilises tu , Debian, Suse, Redhat ... ?
    As tu installé le module CGI sur ton serveur Linux ?

    Supposons que tu as un répertoire /usr/lib/cgi-bin
    Dans ton apache2.conf, met ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
    </Directory>
    A l'intérieur, voici un programme de test, test.pl.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    use CGI;
     
    my $cgi = new CGI;
     
    print $cgi->header();
    print "CGI OK";
    print $cgi->end_html;
    Pour tester ce programme : http://IpDeTonServeur/cgi-bin/test.pl

    Voilà

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Infos
    Djibril,

    J'ai une Ubuntu 10.4, j'ai installé perl et mysql via synaptic mais je vais vérifier comment exactement car mon serveur est à la maison ... et je suis au travail.
    Je souhaitais savoir pourquoi apache cherche mes cgi sous /var/www alors que je ne trouve pas cette arborescence dans le apache2.conf

    Quel est le package sous synaptic qui installe le module CGI ?

    Je vais contrôler le reste et répondre au plus tard demain soir.

    Merci

  5. #5
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddHandler cgi-script .cgi .pl
    Eventuellement ca évitera de te poser la question du scriptalias. (Parce que normalement l'intérêt de ton alias c'est de pouvoir isoler tes cgi dans un dossier cgi-bin, ce que tu ne fais pas en pointant directement dans www)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options ExecCGI 
    Order allow,deny
    Allow from all
    </Directory>
    @+
    Mr6

    PS : tout ca c'est de la conf apache, on est toujours HS

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut résolu avec /usr/lib/cgi-bin
    MR6,

    Merci pour la réponse précédente qui a résolu mon problème :
    - le perl sous /usr/lib/cgi-bin ( après création du répertoire cgi-bin )
    - la config apache2.conf : J'y ai tout diésé : ScriptAlias, Directory

    Apache semble ainsi se suffire de sa config de base.
    Je vais tester avec le /var/www en tant que directory

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut à creuser
    MR6,

    Le directory /var/www/cgi-bin ne fonctionne pas avec ta conf apache et l'url suivante : http://localhost/cgi-bin/testmr6.cgi

    ==> The requested URL /cgi-bin/testmr6.cgi was not found on this server.

    Avec ou sans Addhandler

    voici le error.log :
    [Wed Sep 29 16:49:10 2010] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/testmr6.cgi
    [Wed Sep 29 16:49:16 2010] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /var/www/testmr6.cgi
    [Wed Sep 29 16:49:26 2010] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/testmr6.cgi

    grep -i execcgi apache2.conf
    ==> Options ExecCGI

    Thanks

  8. #8
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut

    Je ne suis pas sûr que tu comprennes ce que tu es en train de faire là en fait...
    Je t'invite à relire la doc de la conf d'apache au lieu de tester au petit bonheur la chance.
    Le principe, pour te le résumer (ca ne remplace pas la lecture de la doc), c'est que tu as ton dossier de travail :
    /var/www
    dans lequel tu vas mettre tout ton site web.
    Ta documentroot, pour faire propre, va s'appeler :
    /var/www/html
    afin d'y ranger tes pages classiques.
    Si tu veux faire du cgi, tu vas les ranger dans :
    /var/www/cgi-bin
    car par habitude les cgi sont des portes ouvertes aux pirates s'ils sont mal écrits, et il faut donc les parquer dans un coin isoler du reste du site. (au passage /usr/lib est un mauvais endroit, /usr étant un de ces dossiers système dont ta machine aura du mal à se passer en cas de pb...).
    Il faut donc créer les dossiers s'ils n'existent pas, déclarer les droits dans les pavés Directory de la conf, etc.....

    Bonne lecture !

    @+
    Mr6

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut victory ...
    MR6,

    Merci pour tes conseils.
    Après plusieurs lectures, je suis tombé sur un thread qui parlait du fichier default sous sites-available.
    J'y ai indiqué mon fameux répertoire /var/www/cgi-bin et cela marche à présent.

    Merci encore pour ton aide.

    Bye

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/07/2010, 14h53
  2. Exécutions de scripts cgi / perl sous Apache 2
    Par gedeon555 dans le forum Apache
    Réponses: 1
    Dernier message: 31/01/2009, 21h23
  3. Réponses: 4
    Dernier message: 29/04/2007, 19h51
  4. Réponses: 2
    Dernier message: 17/04/2007, 11h56
  5. Réponses: 2
    Dernier message: 19/06/2003, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo