Python + CGI + Leopard !

maxetlu

Membre actif
31 Juillet 2005
145
6
38
Bonjour tout le monde !

Je suis en L2 Info et pour mon projet info je dois développer un explorateur de fichier en python avec interface CGI ...
Pour le moment ça va pas trop mal mais je souhaiterais le bosser chez moi et c'est là qu'apparait le problème : je n'arrive pas à lancer le script sous Mac OS X ...

Sous les PC Linux de la Fac la manip est simple : notre script test.cgi (par ex) est mis dans le dossier /Utilisateur/public_html/cgi-bin/ puis on change les autorisations (chmod 755 test.cgi) et enfin on le lance dans un navigateur avec http://localhost/~Utilisateur/cgi-bin/test.cgi ...

Mais sous mac ça ne marche pas et je n'arrive pas à savoir pourquoi ...
Donc si vous avez une idée merci par avance :up:
 
il faut sans doute configurer apache (voire le lancer, aussi, s'il n'est pas actif...) pour accepter les scripts cgi. C'est apache 2 maintenant, par défaut dans mac os x, depuis leopard, pour information.
 
Apache est normalement lancé sur mon ordi puisque j'ai activé le partage web dans les préférences systèmes ...
 
Il faut activer les cgi dans ton fichier de configuration Apache, et le placer dans le bon repertoire (/Libray/WebServer/CGI-Executables/ si mes souvenirs sont bons.)
 
Alors j ai cherché un peu dans l'aide d'Apache et j ai testé de mettre mes .cgi dans le dossier que tu donnes mais ça ne marchait toujours pas et pour la modification du fichier de configuration d'Apache j'ai aussi testé mais sans succès ... Mais je peux m'être trompé pour le second ... (L'anglais informatique d'apache j comprends pas trop lol)
 
Je penses que ton script doit-être en .py, et bien avoir:
Bloc de code:
#!/usr/bin/env python
à la première ligne.

Quelle erreur donne apache quand tu tente d'acceder à la page ?
 
Mon script contient bien #! /usr/bin/env python en début de ligne ...
Apache me renvoit :
The requested URL /~Utilisateur/public_html/cgi-bin/test.cgi was not found on this server.
ou
The requested URL /~Utilisateur/cgi-bin/test.cgi was not found on this server.
 
Bonjour,

J viens de tester avec le dossier public_html à la racine et pas plus ça ne marche toujours pas ... :(

Pour le fichier httpd.conf j'ai essayé de le modifier grâce à l'aide d'Apache mais ça n'avait rien changé ... D'un autre coté je ne sais pas si j'avais fait le bonne manip' vu que je ne comprenais pas tout et qu'il est assez énorme (et en anglais) ... alors pour le lire :eek:

Une idée ?

p.s. : merci en tout cas de vos réponses rapides :up:
 
Place ton fichiers test.cgi dans /Library/WebServer/CGI-Executables, puis va à l'url http://localhost/cgi-bin/test.cgi .
Si ton fichier à les bon droits (755), et le bon header, c'est sensé marcher.
(normalement même pas besoin de modifiler httpd.conf)
 
Je viens de tester et le script se lance (merci :up:) mais ne m'affiche pas la page html en elle-même mais le code source de celle ci ... Bizarre non ?
 
Place ton fichiers test.cgi dans /Library/WebServer/CGI-Executables, puis va à l'url http://localhost/cgi-bin/test.cgi
C'est ça que je disais de faire.

Je viens de tester et le script se lance (merci :up:) mais ne m'affiche pas la page html en elle-même mais le code source de celle ci ... Bizarre non ?
Donc le script n'est pas exécuté. Mais c'est bien comme ça qu'on y accède. essaye en renommant ton fichier *.py pour voir. Sinon ça doit être dans httpd.conf qu'il faut préciser que les .cgi sont des fichiers à exécuter. Mais normalement ça devrait déjà être fait.... :heu:
 
Je viens de tester avec l'extension .py et ça ne marche toujours pas ...
Il faut donc modifier le fichier httpd.conf ...
En regardant l'aide d'Apache il paraitrait qu'il faut rajouter à ce fichier les lignes :
<Directory /usr/local/apache/htdocs/somedir>
Options +ExecCGI
</Directory>
Pour dire que les CGI s'executent dans le dossier à modifier => A remplacer par "/Library/WebServer/CGI-Executables" ? ou "http://localhost/cgi-bin/" ?
Et ensuite mettre :
AddHandler cgi-script cgi py
Pour dire que ce sont ces types de fichier qui utilisent CGI ...
Je mets ces deux textes n'importe où dans le fichier httpd.conf ?
 
:( ça ne marche toujours pas ...
J'ai rajouté ce que tu m'as dit dans le fichier httpd.conf, j'ai redémarré l'ordi au cas où mais toujours pareil ... Pourtant sur l'aide d'apache il est bien inscrit que c'est une possibilité ...

Edit:
Je viens de faire une recherche dans httpd.conf de "/Library/WebServer/CGI-Executables" au cas où et j'ai trouvé ça :
[...]
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"

#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

</IfModule>
Je vais essayer de modifier cette partie ce soir je te dis ça dès que j'ai testé ;)
 
Bon ben je viens de passer un ptit moment dans le fichier de configuration à tester tout ce qui me venait à l'esprit et ça ne marche toujours pas ...

Pour résumé dans le fichier httpd.conf par défault il y a :
[...]
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"

#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

</IfModule>
et
#
# AddHandler allows you to map certain file extensions to "handlers",
# actions unrelated to filetype. These can be either built into the server
# or added with the Action command (see below)
#
# If you want to use server side includes, or CGI outside
# ScriptAliased directories, uncomment the following lines.
#
# To use CGI scripts:
#
#AddHandler cgi-script .cgi
et en théorie en les modifiant comme cela :
  • Options None => Options +ExecCGI (j'ai essayé aussi ExecCGI)
  • #AddHandler cgi-script .cgi => AddHandler cgi-script .cgi .py (j'ai essayé aussi cgi py)
normalement ça devrait marcher ... Mais non les scripts ne sont toujours pas exécutés ...
 
Ok heu je viens de relire mes scripts et je viens de me rendre compte que le problème venait d'eux ... Enfin de moi plutot ... Je m'étais trompé dans l'en-tête de l'html ... Je suis vraiment désolé de vous avoir fait chercher pour "rien" et vous remercie vraiment de votre aide et de votre rapidité ...
 
sudo apachectl restart guigui
si tu veux executer du python coter web serveur mod_python
on ne fait pas de cgi a ton niveau, a moins que tu veuilles creer ton propre troyan
pour faciliter le crack de tes machines...
:( ça ne marche toujours pas ...
J'ai rajouté ce que tu m'as dit dans le fichier httpd.conf, j'ai redémarré l'ordi au cas où mais toujours pareil ... Pourtant sur l'aide d'apache il est bien inscrit que c'est une possibilité ...

Edit:
Je viens de faire une recherche dans httpd.conf de "/Library/WebServer/CGI-Executables" au cas où et j'ai trouvé ça :

Je vais essayer de modifier cette partie ce soir je te dis ça dès que j'ai testé ;)
 
  • J’aime
Réactions: p4bl0