Probleme cgi-bin

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. Modérateur
    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)
    1. 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
  2. Modérateur
    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. 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
  3. Modérateur
    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. 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
  4. 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
    1. Modérateur
      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)
      1. Modérateur
        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)
        1. 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
        2. 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
      2. Modérateur
        Bien vu.
        C U later

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