Probleme cgi-bin

Hafed -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour,

Je suis sous Mandrake 9.0 et Apache.
je teste un programme CGI sur une page HTML (page HTML comprenant un lien vers un programme CGI).
Bon je tape mon URL : http://localhost/toto.html
puis je clique sur mon lien qui doit lancer mon programme CGI et là :
Forbidden
You don't have permission to access /cgi-bin/gbrowse on this server.

Bien entendu mon programme CGI a les droits d'exécution pour tout le monde.
J'ai jeté un coup d'oeil sur les fichiers de configuration apache mais je ne vois pas ce qui cloche (je ne suis pas spécialiste non plus).

Merci pour votre aide,

Hafed

7 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    Ton fichier de configuration d'Apache contient-il une directive de configuration du genre (ici sous Debian)
    <IfModule mod_alias.c>
    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>
    </IfModule>

    Le répertoire est il lisible par le propriétaire du processus Apache?
    (droits r-x minimum)

    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    4
    1. Hafed
       
      Salut,

      Voici ce que je trouve dans le fichier commonhttpd.conf

      ScriptAlias /cgi-bin/ /var/www/cgi-bin/
      ScriptAlias /protected-cgi-bin/ /var/www/protected-cgi-bin/

      et dans le fichier httpd.conf :

      <Directory /var/www/perl>
      AllowOverride All
      Options -Indexes FollowSymLinks MultiViews ExecCGI
      Order allow,deny
      Allow from all
      </Directory>

      <Directory /var/www/cgi-bin>
      AllowOverride All
      Options ExecCGI
      </Directory>

      <Directory /var/www/protected-cgi-bin>
      AllowOverride None
      Options ExecCGI
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
      #allow from .your_domain.com
      </Directory>

      Merci,

      hafed
      0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    Quelques pistes...
    Je ne connais pas commonhttpd.conf
    (est-ce un fichier prope à Mandrake?)
    httpd.conf y fait-il référence (à l'aide d'un include p.ex?)
    Il faudrait alors l'inclure dans httpd.conf, ou définir le ScriptAlias.

    Ton fichier CGI est écrit en quel langage?
    Si c'est un script, la ligne bang
    #! chemin_vers_l_interpréteur
    est-elle correcte?(place-toi dans le répertoire physique cgi-bin et lance le binaire ./nomducgi )

    Johan
    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    1
    1. Hafed
       
      Re -,

      Oui httpd.conf fait reference a commonhttpd.conf :

      Include conf/commonhttpd.conf


      mon test CGI est écrit en perl (le fichier se termine avec l'extension .cgi) et débute par :
      #!/usr/bin/perl

      et son execution :
      ./test1.cgi
      content-type:text/plain

      Exécution test1.cgi terminée - OK

      Merci pour ton aide.
      C'est à s'arracher les cheveux !!!

      Hafed
      0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    As-tu examiné (ton|tes) fichiers log d'Apache.
    less /var/log/apache/error.log
    ou
    tail /var/log/apache/error.log
    (ou ce qui y correspond sous Mandrake) ?

    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    1
    1. Hafed
       
      Re -,

      Désolé (coupure de la connection par mon FAI)

      pour répondre au fichier log

      [root@localhost httpd]# pwd
      /var/log/httpd
      [root@localhost httpd]# tail error_log
      [Mon Jul 26 15:01:57 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
      [Mon Jul 26 15:22:25 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
      [Mon Jul 26 15:23:54 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
      [Mon Jul 26 15:49:15 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
      [Mon Jul 26 16:18:26 2004] [notice] caught SIGTERM, shutting down
      [Mon Jul 26 17:41:57 2004] [notice] Apache-AdvancedExtranetServer/1.3.26 (Mandrake Linux/6mdk) sxnet/1.2.4 mod_ssl/2.8.10 OpenSSL/0.9.6g PHP/4.2.3 configured -- resuming normal operations
      [Mon Jul 26 17:41:57 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
      [Mon Jul 26 17:41:57 2004] [notice] Accept mutex: sysvsem (Default: sysvsem)
      [Mon Jul 26 18:12:03 2004] [error] [client 10.0.0.10] File does not exist: /var/www/html/favicon.ico
      [Mon Jul 26 18:12:05 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
      [root@localhost httpd]#

      J'ai une autre question :
      pourquoi je n'ai pas de dossier /var/log/apache
      et pourquoi je n'ai pas non plus de dossier /usr/local/apache

      (et pourtant apache tourne) ?

      J'ai le sentiment que c'est PHP qui semble gérer le truc !

      Merci,

      Hafed
      0
  4. Hafed
     
    Re -,

    rectificatif :

    il faut lire le message d'erreur suivant :
    You don't have permission to access /cgi-bin/test1.cgi on this server.

    Merci.

    Hafed
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jisisv Messages postés 3678 Statut Modérateur 936
     
    L'emplacement des fichiers log est configuré dans ton fichier
    httpd.conf
    (directives ErrorLog, CommonLog...)
    Les défauts dépendent éventuellement de ta distribution/des directives
    de compilation d'Apache.
    Il n'y a pas de soucis à ce sujet.
    -------
    [Mon Jul 26 18:12:05 2004] [error] [client 10.0.0.10] client denied by server configuration: /var/www/cgi-bin/test1.cgi
    Il faudrait donc bien vérifier la config du serveur.
    Tu n'as pas de fichier .htaccess qui traîne dans /var/www/cgi-bin/ ?

    Extrait de mon httpd.conf
    <Directory /usr/lib/cgi-bin/>
    AllowOverride None
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    </Directory>
    Essaye de modifier ta config en modifiant le répertoire
    /usr/lib/cgi-bin en
    /var/www/cgi-bin

    N'oublie pas de redémarer ton serveur !

    Johan
    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  7. jisisv Messages postés 3678 Statut Modérateur 936
     
    Chez moi un bête
    horus:/etc/apache# cat /usr/lib/cgi-bin/test
    #!/bin/sh
    echo "Content-Type: text/html"
    echo
    echo "<html><body>"
    echo "Hello World<br>"
    env | sed -e "s/$/<br>/"
    echo "</body></html>"

    fonctionne!
    (à ne pas mettre en public bien sûr)
    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
    1. Hafed
       
      Salut Jisisv,

      Pas de fichier .htaccess dans /var/www/cgi-bin
      Je vais faire d'autres tests et je reviens sur le forum dans l'après-midi.

      Merci encore à toi pour ton aide.

      @+,

      Hafed
      0
    2. Hafed
       
      Hourra !!!!
      Yeeessssssss !!!!
      Hulahup barbatruc !!!!

      Ca marche !!!

      après 100000 manips et pour résumer il y avait deux choses :

      1) rajouter dans le fichier commonhttpd.conf, au niveau du directory cgi-bin, les deux lignes
      Order allow,deny
      allow from all

      2) les scripts CGI doivent être en Lecture et Exécution (et non pas seulement en Exécution).

      Je me doutais bien que c'était tout bête mais bon une fois qu'on le sait.

      Alors encore un grand merci à toi Jisisv et chapeau bas.

      Hafed
      0
  8. jisisv Messages postés 3678 Statut Modérateur 936
     
    Bien vu.
    C U later

    Johan
    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0