지난주에도 계속해서 온라인으로 파이썬을 배우며 파이썬에서의 CGI 프로그래밍을 접하게 되었습니다. CGI의 공식 정의는 다음과 같습니다.
공통 게이트웨이인 CGI(Common Gateway Interface) 인터페이스는 HTTP 서버와 같은 서버에서 실행되는 프로그램으로 클라이언트 HTML 페이지에 인터페이스를 제공합니다. Linux
환경에 있지만 제 생각에는 구성 파일의 내용은 큰 변화가 있을 것이므로 땜질 여행을 시작했습니다. 개발을 위해 Windows를 사용하는 것은 실제로 함정이라는 것이 밝혀졌습니다.온라인 학습 웹 사이트 Python CGI에 따르면 먼저 CGI 디렉터리를 설정하고 Apache 구성 파일
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
httpd.conf 파일을 다음과 같이 수정합니다. <Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all</Directory>
그런 다음 AddHandler에 .py 접미사를 추가하여 .py에 액세스할 수 있습니다. 종료 python 스크립트 파일:
이 모든 작업을 수행한 후 서버(Apache/Wamp)를 다시 시작하고 첫 번째 CGI 프로그램을 작성합니다. 코드는 다음과 같습니다. :
test1.py
#!D:\Python27\python # -*- coding: UTF-8 -*-print "Content-type:text/html\r\n\r\n"print '<html>'print '<head>'print '<title>Hello Word - First CGI Program</title>'print '</head>'print '<body>'print '<h2>Hello Word! This is my first CGI program</h2>'print '</body>'print '</html>'
<🎜를 입력하세요. > 그런 다음 브라우저 액세스에 다음 결과가 표시됩니다.
Hello Word! This is my first CGI program
그런 다음 잠시만 기다려 주세요. 프로그램:
hello_get.py#!D:\Python27\python# -*- coding: UTF-8 -*-# CGI处理模块import cgi, cgitb
# 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据first_name = form.getvalue('first_name')last_name = form.getvalue('last_name')print "Content-type:text/html\r\n\r\n"print "<html>"print "<head>"print "<title>Hello - Second CGI Program</title>"print "</head>"print "<body>"print "<h2>Hello %s %s</h2>" % (first_name, last_name)print "</body>"print "</html>"
브라우저에서 홈페이지에 나와있는대로
Hello ZARA ALI를 출력하지 않고 아래와 같은 오류 메시지가 나옵니다
그래서 의아해했는데, 구성환경도 똑같고 코드도 똑같더라구요. 그럼 뭐가 문제일까요? 결과는 모두 Linux.config 방식이었기 때문에 어쩔 수 없이 wamp를 다시 설치한 후 CGI 환경을 다시 구성한 후, 웹사이트에 있는 코드를에디터에 복사했습니다. 그런 다음 브라우저에 다시 입력하세요.
http://localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
결과는 여전히 위의 오류 프롬프트 문자열이므로 프롬프트를 자세히 살펴보았는데 대략 다음과 같습니다.
서버 내부 오류
서버에 내부 오류가 발생했거나 잘못된 구성으로 인해 요청을 완료할 수 없습니다.
이 오류와 처리 방법을 이메일로 서버 관리자에게 문의하세요. 이 오류가 발생하기 전에 수행해야 할 작업은
자세한 내용은 서버 오류 로그를 확인하세요
나는 서버를 잘못 구성했기 때문에 당황했을 때 갑자기 구성 파일을 수정하지 않았는데도 첫 번째 프로그램 test1이 올바르게 실행될 수 있다고 생각했습니다. 이 오류는 아무 것도 없는 것이 아닐까요? 구성 파일을 사용하여 test1의 첫 번째 줄에서 인터프리터 경로를 선언하는 문을 제거하고 다시 실행해 보십시오.
그래서 매우 안심이 됩니다. 이것이 제 추측을 확인해 주었기 때문입니다. 서버 구성과는 아무런 관련이 없습니다. 내 스크립트 파일에 오류가 있어서 서버가 요청에 응답할 수 없기 때문입니다. 이 경우 hello_get.py의 오류도 동일합니다. 그러면 문제가 훨씬 간단해집니다. 암호.
여기서 내 나쁜 습관에 대해 생각해 보고 싶습니다. 웹사이트에서 루틴을 실행하려고 할 때 항상 Ctrl C를 누른 다음 Ctrl V를 누릅니다. 복사하여 자신의 편집기에 붙여넣으세요. 간단한 프로그램은 괜찮지만, 코드 블록이 많은 복잡한 프로그램은 잘못된 들여쓰기 형식으로 인해 실행 오류가 발생합니다. Python에서는 이러한 문제가 특히 두드러집니다. 들여쓰기에 대한 요구 사항은 매우 엄격하므로 Python 프로그램을 자신의 프로그램에 복사하여 붙여넣어서는 안 됩니다. 들여쓰기를 제어하려면 코드별로 코드를 입력해야 합니다.
내가 이 말을 했을 때 사람들은 이미 내 hello_get.py 파일에서 오류를 봤을 것입니다. 사실 내가 직접 입력한 것이 아닙니다. , 이전에 온라인으로 복사를 시도한 적이 있습니다. C 언어 코드를 VC++6.0에 집어넣은 모습인데, 겉으로는 문법은 완전히 맞는 것 같지만 밑에는 항상 오류가 나고, 프롬프트도 이해가 안 되기 때문에 이런 상황이 닥치면 그럴 수도 있겠다는 생각이 듭니다. 이유. 이는 또한 코드를 프로그램 문자에 직접 입력해야 함을 모든 사람에게 경고합니다. 그렇지 않으면 감지하기 어려운 오류가 발생합니다.
마지막으로 CGI 스크립트를 올바르게 실행하기 위해 Windows에서 wamp(Apache)를 올바르게 구성하는 방법에 대해 설명하겠습니다. :
httpd.conf 열기
371행 변경
ScriptAlias /cgi-bin/ "D:/wamp/bin/apache/apache2.4.9/cgi-bin/"前面的#号去掉,就是解除注释,将后面引号里的D:/wamp/bin/apache/apache2.4.9/cgi-bin/改成自己的cgi-bin所在的路径
将387行
保存之后重启服务器即可
【相关推荐】
2. 分享在IIS上用CGI方式运行Python脚本的实例教程
위 내용은 PythonCGI 프로그래밍의 예제 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!