2011-07-20 59 views
2

我.py文件執行終端確定,但在瀏覽器中內部服務器錯誤500 - 的Python,CGI

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>500 Internal Server Error</title> 
</head><body> 
<h1>Internal Server Error</h1> 
... 
... 

這裏是.py文件給出了這樣的錯誤:

#!/usr/bin/python 
import cgi 
import cgitb; cgitb.enable() 
print "Content-Type: text/html\n\n"  # HTML is following 
print         # blank line, end of headers 

print "<TITLE>CGI script output</TITLE>" 
print "<H1>This is my first CGI script</H1>" 
print "Hello, world!" 

我應該將它保存爲.cgi文件?我已經嘗試了相同的錯誤,我已經嘗試了許多像這樣的文件,沒有工作,我相信Apache服務器正在工作,因爲有沒有問題從同一目錄運行其他.cgi腳本。

我也曾嘗試: #在/ usr/local/bin目錄/蟒蛇& #在/ usr/bin中/本地/蟒蛇

任何幫助表示讚賞!

編輯 錯誤日誌輸出: (2)沒有這樣的文件或目錄: '.../.../.../test.py' 執行失敗腳本頭 過早結束:test.py

+1

什麼正確的'#!的/ usr/bin中/ env的python'?你爲什麼要使用CGI?它不僅僅被棄用。編輯:如果您必須使用CGI來爲您的腳本提供服務,我會建議通過CGI提供WSGI應用程序。 – schlamar

+0

是的,我試過/ env python。 CGI看起來很容易設置,並且在一定程度上,我已經寫了很多python代碼 – Kilizo

+0

WSGI更簡單得多,而且很容易移植到。看看燒瓶或瓶子框架。 – schlamar

回答

0

這是我剛纔寫的東西。在對CGI進行故障排除時,這些是一些好的事情。

有一些提示讓Python可以在CGI中工作。

Apache的安裝:這可能是老

添加蟒蛇通過修改配置中的以下內容的CGI:

Options Indexes FollowSymLinks ExecCGI 
    AddHandler cgi-script .cgi .py 
  1. 總是通過Apache瀏覽的頁面。 請注意,通過瀏覽器查看文件系統中的文件適用於html頁面上的大多數內容,但不適用於CGI。要使腳本起作用,必須通過htdocs文件系統打開腳本。您的瀏覽器地址欄應如下所示:

    \\127.0.0.1\index.html or 
    \\localhost\index.html 
    

    如果通過文件系統打開文件,CGI將不起作用。比如,如果這是在瀏覽器的地址欄:腳本爲Unix格式的行

    c:\Apache\htdocs\index.html (or some other example location) 
    
  2. 轉換結束: 大多數編輯有選項「行尾顯示」,然後從轉換工具Unix到PC格式。您必須將行尾設置爲Unix格式。

  3. 狀態的路徑上的CGI腳本的第一行Python解釋: 您必須具有以下線路作爲自己的Python的CGI腳本的第一行之一:

    #!C:\Python25\Python.exe 
    #!/usr/bin/python 
    

    頂線在PC上進行調試時使用,底部用於服務器,如1and1。我如圖所示保留行,然後通過刪除第一行,在服務器上啓動後進行編輯。

  4. 打印的內容類型的打印其他任何輸出前指定的HTML:由地方在你的腳本很早就加入如下一行 這可以簡單地做:

    print "Content-Type: text/html\n\n" 
    

    注意,需要行2月底。

  5. 安裝Python腳本給調試信息: 導入以下獲得詳細的調試信息。

    import cgitb; cgitb.enable() 
    

    如果cgitb不可用另一種方法是做到以下幾點:

    import sys 
    sys.stderr = sys.stdout 
    
  6. 在python腳本的權限必須設置爲執行服務器。 上傳您的文件後,請務必編輯第一行並設置要執行的文件的權限。

檢查是否可以直接點擊python腳本。如果你不能,修復上述步驟(2-6)。然後當Python腳本正在工作時,調試shtml。