# Python + CGI + Leopard !



## maxetlu (23 Novembre 2007)

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


----------



## maousse (23 Novembre 2007)

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.


----------



## maxetlu (23 Novembre 2007)

Apache est normalement lancé sur mon ordi puisque j'ai activé le partage web dans les préférences systèmes ...


----------



## Warflo (24 Novembre 2007)

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.)


----------



## maxetlu (24 Novembre 2007)

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)


----------



## Warflo (24 Novembre 2007)

Je penses que ton script doit-être en .py, et bien avoir:

```
#!/usr/bin/env python
```
à la première ligne.

Quelle erreur donne apache quand tu tente d'acceder à la page ?


----------



## maxetlu (24 Novembre 2007)

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.


----------



## p4bl0 (24 Novembre 2007)

Et sans le /~User ?

en générale le répertoire cgi-bin et à la racine (même quand il existe pas réellement). Faut aller voir dans le httpd.conf


----------



## maxetlu (24 Novembre 2007)

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  

Une idée ?

p.s. : merci en tout cas de vos réponses rapides


----------



## Warflo (24 Novembre 2007)

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)


----------



## maxetlu (24 Novembre 2007)

Je viens de tester et le script se lance (merci ) mais ne m'affiche pas la page html en elle-même mais le code source de celle ci ... Bizarre non ?


----------



## p4bl0 (24 Novembre 2007)

Warflo a dit:


> 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.



maxetlu a dit:


> Je viens de tester et le script se lance (merci ) 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....


----------



## maxetlu (24 Novembre 2007)

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 ?


----------



## p4bl0 (24 Novembre 2007)

C'est "/Library/WebServer/CGI-Executables" 

Alors essaye en ajoutant :
	
	



```
<Directory /Library/WebServer/CGI-Executables>
Options +ExecCGI
</Directory>
AddHandler cgi-script cgi py
```
dans le httpd.conf


----------



## maxetlu (24 Novembre 2007)

ç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
> ...


Je vais essayer de modifier cette partie ce soir je te dis ça dès que j'ai testé


----------



## maxetlu (24 Novembre 2007)

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
> ...


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)
> ...


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 ...


----------



## maxetlu (24 Novembre 2007)

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é ...


----------



## tatouille (27 Novembre 2007)

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...


maxetlu a dit:


> ç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:
> ...


----------



## maxetlu (9 Janvier 2008)

tatouille a dit:


> on ne fait pas de cgi a ton niveau



heu si => sujet du TP http://www.lirmm.fr/~pompidor/ENONCES_TPS/CGI_PYTHON_HTML_JAVASCRIPT/enonce_Explorateur.pdf


----------



## tatouille (10 Janvier 2008)

bas vu la gueule du site il faudrait urgemment arreter de suivre les tp de pompidor


----------



## maxetlu (10 Janvier 2008)

C'est sur que son site est pas génial pour un prof d'info mais bon c'est pas le problème ... Tant qu'il est bon en cours


----------



## tatouille (11 Janvier 2008)

what you see is what you get


----------

