這個確切的問題已經被問過,但我在我的智慧結束!我花了4個小時試圖讓一個簡單的Python CGI腳本在Windows XP上工作,但我得到錯誤。請保存我的理智!在Windows XP上運行Python CGI腳本
的Python腳本register.py
#!c:/Python30/python.exe -u
print "Content-type: text/html"
print "<P>Hello, World!</p>"
腳本位於:
C:\ Program Files文件\ Apache軟件基金會\ APACHE2.2 \ cgi-bin目錄\警報器
Apache的錯誤日誌:
[Tue Sep 21 19:06:36 2010] [error] [client 127.0.0.1] Premature end of script headers: register.py
[Tue Sep 21 19:06:36 2010] [error] [client 127.0.0.1] File "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/alerter/register.py", line 3\r
[Tue Sep 21 19:06:36 2010] [error] [client 127.0.0.1] print "Content-type: text/html"\r
[Tue Sep 21 19:06:36 2010] [error] [client 127.0.0.1] ^\r
[Tue Sep 21 19:06:36 2010] [error] [client 127.0.0.1] SyntaxError: invalid syntax\r
的httpd.conf:
LoadModule cgi_module modules/mod_cgi.so
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
Options +ExecCGI
AddHandler cgi-script .py
</Directory>
這應該非常簡單。是?我會錯過一件讓它最終成功的東西。我有一段時間PHP工作沒有問題。
任何想法?謝謝!!!
謝謝吉姆!使用'sys'方法的作品!我現在對打印報告感到困惑。我試圖從'寫'上面打印同一行,但我得到了通常的錯誤。 – Christopher 2010-09-22 03:31:42
我在http://www.faqs.org/docs/diveintopython/kgp_stdio.html看到以下內容:stdout是一個類似文件的對象;調用它的寫函數將打印出你給它的任何字符串。事實上,這正是打印功能的真正用處;它將回車添加到要打印的字符串的末尾,並調用sys.stdout.write。 – Christopher 2010-09-22 03:34:34
確實如此。因爲這個確切的區別,我使用了寫入 - 寫入不會將任何內容附加到您的字符串中,因此可以很容易地發現實際的錯誤。 – 2010-09-22 09:12:43