2012-05-01 3 views
21

Когда я запускаю python -m SimpleHTTPServer 8000 или python -m CGIHTTPServer 8000 в своей оболочке, я размещаю содержимое своего текущего каталога в Интернете.Как разместить скрипт cgi python с `python -m SimpleHTTPServer 8000` или` python -m CGIHTTPServer 8000`?

Я хотел бы сделать следующее cgi_script.py корректно работать, используя приведенную выше команду в командной строке, когда я просматриваю к 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> 
""" 

Но этот сценарий отображается буквально и не только «Hello World! " часть. Btw Я изменил права доступа к файлам 755 для cgi_script.py, а также папку, в которой я ее размещаю.

+0

Для тех, кто пытается это сделать на Mac или Linux, обязательно получите разрешения, позволяющие выполнить файл. Другими словами: 'chmod + x cgi-bin/cgi_script.py' – greggles

ответ

32

Попробуйте с python -m CGIHTTPServer 8000.

Обратите внимание, что вам необходимо переместить скрипт в каталог cgi-bin или htbin, чтобы он мог быть запущен.

+0

Это ничего не меняет, к сожалению. (Я не понимаю, почему нет). – Bentley4

+0

@ Bentley4 - см. Обновленный ответ о каталоге CGI. – rodrigo

+0

Я пробовал использовать каталог cgi_bin, htbin и даже cgi-bin. Ни один из них не работал должным образом. – Bentley4

5

SO не позволяет мне комментировать, поэтому я добавляю это как отдельный ответ, помимо родриго.

Вы можете использовать другой параметр cgi_directories, который по умолчанию равен ['/cgi-bin', '/htbin']. Больше информации here

0

Когда я столкнулся с этой проблемой, я обнаружил, что в зависимости от того, в каком каталоге вы находитесь, когда вы запускаете команду python -m CGIHTTPServer 8000, вы получаете разные результаты. При попытке запустить команду в каталоге cgi-bin браузер продолжал возвращать исходный код сценария. как только я поднялся на один уровень выше и снова запустил команду python -m CGIHTTPServer 8000, мой скрипт начал выполняться.

0

@ Bentley4 -ifyou все еще не в состоянии сделать, попробуйте импортировать cgi.

# C: \ Python34 \ python.exe -u импорт CGI печати ("Content-тип: текст/html")

НТН

0

в Python3 командная строка просто

python -http.server --cgi 8000 
+1

и да: сценарий должен находиться в '/ cgi-bin' – AchimG

+3

, ваша команда выходит из строя с ошибкой 'Unknown option: -p', что имеет смысл, потому что вы даете' http.server', как если бы это был набор коротких опции. Это не так. Вместо этого он должен быть 'python -m http.server --cgi 8000' – josch

0

Эта работа для меня, запустить python -m CGIHTTPServer 8000 команду такого же уровня меню с помощью CGI-BIN и переместите cgi_script.py в CGI-BIN folder.In типа браузера http://localhost:8000/cgi-bin/cgi_script.py