web-dev-qa-db-fra.com

Comment héberger un script cgi python avec `python -m SimpleHTTPServer 8000` ou` python -m CGIHTTPServer 8000`?

Lorsque j'exécute python -m SimpleHTTPServer 8000 ou python -m CGIHTTPServer 8000 dans mon shell, j'héberge le contenu de mon répertoire actuel sur Internet.

Je souhaite que le fichier cgi_script.py suivant fonctionne correctement à l'aide de la commande ci-dessus dans la ligne de commande lorsque je navigue vers 192.xxx.x.xx:8000/cgi_script.py.

#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""

Mais ce script est affiché littéralement et pas seulement le "Hello World!" partie. Btw j'ai changé les autorisations de fichiers à 755 pour cgi_script.py ainsi que le dossier que je suis l'héberger.

22
Bentley4

Essayez avec python -m CGIHTTPServer 8000.

Notez que vous devez déplacer le script dans un répertoire cgi-bin ou htbin pour pouvoir être exécuté.

33
rodrigo

SO ne me permet pas de commenter, alors j'ajoute ceci comme réponse séparée, en plus de celle de rodrigo.

Vous pouvez utiliser un autre paramètre cgi_directories dont la valeur par défaut est ['/cgi-bin', '/htbin']. Plus d'infos ici

6
spawnedc

Pour moi, exécutez la commande python -m CGIHTTPServer 8000 au même niveau de menu avec cgi-bin et déplacez cgi_script.py dans le dossier cgi-bin. Dans le type de navigateur http: // localhost: 8000/cgi-bin/cgi_script.py

0
Brian

en Python3 la ligne de commande est simplement

python -http.server --cgi 8000
0
AchimG

@ Bentley4 -ify vous ne pouvez toujours pas faire, Essayez d'importer cgi.

#! C:\Python34\python.exe -u Import cgi Print ("Type de contenu: text/html")

HTH

0
sabiyur

Lorsque j'ai rencontré ce problème, j'ai constaté que, selon le répertoire dans lequel vous vous trouvez lorsque vous exécutez la commande python -m CGIHTTPServer 8000, les résultats sont différents. En tentant d'exécuter la commande dans le répertoire cgi-bin, le navigateur a continué à renvoyer le code de script brut. une fois que j'ai gravé un niveau supérieur et exécuté la commande python -m CGIHTTPServer 8000 de nouveau, mon script a commencé à s'exécuter. 

0
Marquis Blount