CGI script : 404 not found
Fermé
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
-
Modifié par baladur13 le 21/06/2014 à 14:16
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 21 juin 2014 à 18:34
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 21 juin 2014 à 18:34
A voir également:
- 404 not found : la route demandée ('r.orange.fr') n'existe pas.
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
- Executeur de script - Télécharger - Édition & Programmation
12 réponses
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 11:52
21 juin 2014 à 11:52
Ajoutez
AddHandler cgi-script .cgi
avant
</Directory>
AddHandler cgi-script .cgi
avant
</Directory>
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 12:46
21 juin 2014 à 12:46
essayez
cat /var/log/messages
ou
tail /var/log/messages (pour afficher uniquement les 10 dernières lignes)
cat /var/log/messages
ou
tail /var/log/messages (pour afficher uniquement les 10 dernières lignes)
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 12:59
21 juin 2014 à 12:59
Pour info (mais je l'apprends également à l'instant) ce fichier n'existe plus depuis 3 ans.
https://askubuntu.com/questions/51265/where-is-var-log-messages
En tout cas par rapport à mon problème le seul fichier de log qui se retrouve modifié lorsque je le requête http://localhost/cgi-bin/hello.cgi est le fichier /var/log/apache2/access.log qui n'a l'air d'indiquer que les requêtes, code HTTP et user-agent, exemple :
https://askubuntu.com/questions/51265/where-is-var-log-messages
En tout cas par rapport à mon problème le seul fichier de log qui se retrouve modifié lorsque je le requête http://localhost/cgi-bin/hello.cgi est le fichier /var/log/apache2/access.log qui n'a l'air d'indiquer que les requêtes, code HTTP et user-agent, exemple :
127.0.0.1 - - [21/Jun/2014:12:57:54 +0200] "GET /cgi-bin/hello.cgi HTTP/1.1" 404 505 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1671.3 Safari/537.36"
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 13:16
Modifié par bizu53 le 21/06/2014 à 13:16
Comment être sûr que cgi.load est bien pris en compte ? Je me demande s'il l'est bien.
Je viens de voir qu'une ligne "Include conf-available/serve-cgi-bin.conf" était commentée dans /etc/apache2/sites-available/000-default.conf. Je viens de la décommenter pour voir, mais un restart d'apache2 ne change toujours rien au problème.
Je viens de voir qu'une ligne "Include conf-available/serve-cgi-bin.conf" était commentée dans /etc/apache2/sites-available/000-default.conf. Je viens de la décommenter pour voir, mais un restart d'apache2 ne change toujours rien au problème.
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 13:13
21 juin 2014 à 13:13
Le problème est au niveau de votre script. Essayez ce code:
#!/bin/bash echo "Content-type: text/html" echo "" echo '<html>' echo '<head>' echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' echo '<title>CGI page</title>' echo '</head>' echo '<body>' echo 'Hello world' echo '</body>' echo '</html>' exit 0
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 13:32
Modifié par bizu53 le 21/06/2014 à 13:32
Merci de vous pencher également sur mon problème mais non le problème n'est pas son contenu car j'obtiens une page "404 Not Found" ; ce qui est décorrélé du contenu éventuellement renvoyé.
Je note d'ailleurs que cette proposition est strictement équivalente à la mienne. Le protocole HTTP n'oblige pas l'envoi de contenu HTML (et echo "" est équivalent à echo sans paramètre).
Tous les tuto cgi-bin que j'ai trouvé se limite également (mais souvent avec un script perl) au deux print (content type, double saut de ligne, un helloworld).
(Au cas où ça marcherait par magie, je l'ai quand même testé.)
Je note d'ailleurs que cette proposition est strictement équivalente à la mienne. Le protocole HTTP n'oblige pas l'envoi de contenu HTML (et echo "" est équivalent à echo sans paramètre).
Tous les tuto cgi-bin que j'ai trouvé se limite également (mais souvent avec un script perl) au deux print (content type, double saut de ligne, un helloworld).
(Au cas où ça marcherait par magie, je l'ai quand même testé.)
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 14:31
21 juin 2014 à 14:31
ou peut être qu'apache ne trouve pas /bin/bash
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 14:47
Modifié par bizu53 le 21/06/2014 à 14:47
Pourquoi ne le trouverait-il pas ? Je ne pense pas que le code d'erreur serait 404 mais un code dans les 50x dans ce cas : erreur interne.
J'ai la même page 404 Not Found pour un script perl (commençant par #!/usr/bin/perl).
J'ai la même page 404 Not Found pour un script perl (commençant par #!/usr/bin/perl).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 14:58
21 juin 2014 à 14:58
J'abandonne mon idée de partir d'une installation par défaut d'Apache, je pensais que ce serait beaucoup plus simple.
Je viens de me coder un serveur HTTP minimal entièrement en bash (utilisant netcat) puisque mon besoin n'est que d'exécuter des commandes sur réception de requêtes HTTP.
Je viens de me coder un serveur HTTP minimal entièrement en bash (utilisant netcat) puisque mon besoin n'est que d'exécuter des commandes sur réception de requêtes HTTP.
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 15:15
21 juin 2014 à 15:15
Juste pour tester ajouter à /etc/apache2/apache2.conf
ScriptAlias /test/ /test/
<Directory /test/>
Options ExecCGI
AddHandler cgi-script cgi
</Directory>
creer le dossier test à la racine, y mettre hello.cgi puis
chmod 777 /test -R
redemarrer le serveur
acceder à http://localhost/test/hello.cgi
ScriptAlias /test/ /test/
<Directory /test/>
Options ExecCGI
AddHandler cgi-script cgi
</Directory>
creer le dossier test à la racine, y mettre hello.cgi puis
chmod 777 /test -R
redemarrer le serveur
acceder à http://localhost/test/hello.cgi
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 16:11
Modifié par bizu53 le 21/06/2014 à 16:11
C'est mieux.
Ce n'est plus une 404 Not Found mais une 403 Forbidden maintenant (You don't have permission to access /test/hello.cgi on this server.)
Ce n'est plus une 404 Not Found mais une 403 Forbidden maintenant (You don't have permission to access /test/hello.cgi on this server.)
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 16:29
21 juin 2014 à 16:29
Ajouter:
Order allow,deny
Allow from all
</Directory>
Order allow,deny
Allow from all
</Directory>
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 17:03
Modifié par bizu53 le 21/06/2014 à 17:03
idem 403 c'est peut-être une autre configuration pré-existante (par défaut) qui bloque (mais je ne connais pas). Voici donc son contenu (hors commentaires pour l'alléger) :
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
ServerName localhost
ScriptAlias /test/ /test
<Directory /test/>
Options ExecCGI
AddHandler cgi-script cgi
Order allow,deny
Allow from all
</Directory>
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 17:10
21 juin 2014 à 17:10
Ah oui c'est ici:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
remplacer AllowOverride None par:
AllowOverride All
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
remplacer AllowOverride None par:
AllowOverride All
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 17:33
21 juin 2014 à 17:33
C'était effectivement sûrement à faire mais j'obtiens toujours un 403.
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 17:37
Modifié par bizu53 le 21/06/2014 à 17:37
Je viens de remarquer dans ce fichier de configuration qu'il inclut :
mods-enabled/*.load
mods-enabled/*.conf
conf-enabled/*.conf
et sites-enabled/*.conf
alors que cgi.load et alias.load sont dans mods-available.
Ne faudrait-il pas qu'ils soient inclus ? Si oui, en les déplaçant de mods-available vers mods-enabled ?
mods-enabled/*.load
mods-enabled/*.conf
conf-enabled/*.conf
et sites-enabled/*.conf
alors que cgi.load et alias.load sont dans mods-available.
Ne faudrait-il pas qu'ils soient inclus ? Si oui, en les déplaçant de mods-available vers mods-enabled ?
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 17:40
21 juin 2014 à 17:40
Ajouter :
Require all granted
au directory test
Require all granted
au directory test
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
Modifié par bizu53 le 21/06/2014 à 17:52
Modifié par bizu53 le 21/06/2014 à 17:52
Toujours pas suffisant :p (403)
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
21 juin 2014 à 17:54
21 juin 2014 à 17:54
Ce qui signifie que les modules cgi et alias ne sont pas enabled
donc fait comme ci:
a2enmod alias
a2enmod cgi
restart apache
donc fait comme ci:
a2enmod alias
a2enmod cgi
restart apache
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 17:57
21 juin 2014 à 17:57
La première commande me dire qu'apparemment alias était déjà activée.
Mais la seconde a bien activé le module (d'après ce que ça dit).
Mais la seconde a bien activé le module (d'après ce que ça dit).
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 18:00
21 juin 2014 à 18:00
J'obtiens toujours une page 403 Forbidden.
Par curiosité je suis allé voir si mon original http://localhost/cgi-bin/hello.cgi fonctionnait, et je n'obtiens plus 404 Not Found mais 403 Forbidden également "maintenant" (je ne sais pas depuis quelle modif).
Par curiosité je suis allé voir si mon original http://localhost/cgi-bin/hello.cgi fonctionnait, et je n'obtiens plus 404 Not Found mais 403 Forbidden également "maintenant" (je ne sais pas depuis quelle modif).
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 18:01
21 juin 2014 à 18:01
J'aurais mieux fait de suivre entièrement un tuto pour créer un site avec CGI activé :p.
Je pensais sérieusement qu'il aurait été plus simple de simplement se servir de celui qui est fournit de base.
Je pensais sérieusement qu'il aurait été plus simple de simplement se servir de celui qui est fournit de base.
zermat
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
16
Modifié par zermat le 21/06/2014 à 18:20
Modifié par zermat le 21/06/2014 à 18:20
Je pense que vous utiliser la version 2.4 d'apache beaucoup de chose on changer
par exemple vous devez remplacer
Order allow,deny
Allow from all
par
Require all granted
Plus d'info ici:
http://httpd.apache.org/docs/2.4/fr/upgrading.html
par exemple vous devez remplacer
Order allow,deny
Allow from all
par
Require all granted
Plus d'info ici:
http://httpd.apache.org/docs/2.4/fr/upgrading.html
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
21 juin 2014 à 18:34
21 juin 2014 à 18:34
Comme j'ai installé ça hier c'est certainement la dernière ou en tout cas une très récente : Apache/2.4.7 (Ubuntu)
C'est l'impression que j'avais que beaucoup de choses ont changé car tous les tutos que j'ai pu trouver mentionne une configuration organisée différemment.
Ce nouveau remplacement n'a toujours pas permis l'affichage d'une page générée par le script.
Ce lien liste effectivement plein de modification mais je ne connaissais pas l'ancienne configuration non plus. Je connais juste quelques fonctionalités mais je ne sais pas faire toute une configuration (d'où mon idée initiale d'aller trouver quel est le dossier par défaut cgi-bin où placer mon script pour qu'il soit simplement exécuté).
Je vous remercie en tout cas pour votre implication, mais si mon idée n'est pas faisable simplement, autant que je reste avec mon server HTTP minimal codé en script shell (avec netcat).
C'est l'impression que j'avais que beaucoup de choses ont changé car tous les tutos que j'ai pu trouver mentionne une configuration organisée différemment.
Ce nouveau remplacement n'a toujours pas permis l'affichage d'une page générée par le script.
Ce lien liste effectivement plein de modification mais je ne connaissais pas l'ancienne configuration non plus. Je connais juste quelques fonctionalités mais je ne sais pas faire toute une configuration (d'où mon idée initiale d'aller trouver quel est le dossier par défaut cgi-bin où placer mon script pour qu'il soit simplement exécuté).
Je vous remercie en tout cas pour votre implication, mais si mon idée n'est pas faisable simplement, autant que je reste avec mon server HTTP minimal codé en script shell (avec netcat).
Modifié par bizu53 le 21/06/2014 à 12:31
J'aurais dû mentionner que j'avais essayé, sans succès (du coup je n'ai pas pensé que c'était effectivement nécessaire) de :
- ajouter la ligne comme tu me dis dans /etc/apache2/conf-available/serve-cgi-bin.conf
- décommenter la ligne "AddHandler cgi-script .cgi" du fichier /etc/apache2/mods-available/mime.conf (mais le commentaire indique "To use CGI scripts outside of ScriptAliased directories")
- les deux à la fois
Je ne sais pas quel moyen fournit Apache2 pour comprendre ce qu'il se passe (ni comment). Est-ce qu'un log peut s'activer ? qui dirait pourquoi il affiche une page "404 Not Found" ? (histoire de savoir si c'est un problème de configuration de modules ou de droits ou que sais-je...)