2012-04-12 135 views
11

我試圖開始使用Python,但無法正確地爲localhost(使用Ampps)設置服務器。 Python通過IDLE和命令行運行得很好,但是,當我在瀏覽器中打開文件時,代碼顯示並不運行。.py在瀏覽器中顯示代碼而不是運行的文件

我跟着這個http://www.imladris.com/Scripts/PythonForWindows.html教程獲取cgi設置,但它不工作。

下面是我的「hello world」程序的代碼,如果這有什麼區別的話。

#!/usr/bin/env python 
# -*#!/usr/bin/python 

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>' 

有什麼建議嗎?

+0

是否已進行了文件的可執行文件?服務器中是否啓用了cgi-scripts? – 2012-04-12 13:13:08

+2

後,你得到這個工作 - 檢查Python的語法多行字符串使用三重引號像'「」「東西‘’」' – jsbueno 2012-04-12 13:23:21

+0

@JoachimPileborg我相信我能在服務器上的CGI的腳本,但我不知道做該文件可執行。當我查看文件(文件圖標本身,而不是代碼),它的上面有蟒蛇的標誌,所以我不知道這意味着它的可執行文件。 – user1104854 2012-04-12 14:22:51

回答

6

您的web服務器將您的python代碼視爲靜態文件而不是可執行文件。這裏的目標是希望Apache執行python並將stdout發送回用戶的瀏覽器。

我對Ampps並不熟悉,但獲得此設置的基本Apache流程就像這樣。

  1. 編輯您的選項的httpd.conf的線,其中包括ExecCGI
  2. 通過添加以下行以註冊您的httpd.conf文件的Python作爲CGI處理程序:
    AddHandler .py
  3. 重啓Apache
  4. 確保你的shebang行(上面的#!/ usr/bin/env python位)實際上指向你的python可執行文件的路徑。對於python2.6的生活在C:這可能是:
    #!\Python26\python
  5. 如果你的腳本必須是不是修改家當行的行ScriptInterpreterSource registry添加到您的httpd.conf便攜,並確保窗戶打開* .py文件與Python.exe默認情況下。這可以通過雙擊腳本來測試。如果它不執行,請右鍵單擊它,選擇open-with,然後選擇其他,然後瀏覽到您的python.exe。確保選中「始終使用此程序打開此類文件」框。有關於此here的Microsoft知識庫文章。

最後,mod_wsgi或FastCGI是讓Apache執行python的首選方法,同時擁有較低的流量站點(每天有數十個請求)。我也想建議你到網頁框架,如web.py(非常輕巧)或Django的(重量較重,但可以節省你,如果你正在收集用戶輸入或與數據庫交互的時間噸)。

+0

Ampps是我看到的第一個包含python的軟件包,所以我選擇了它。還有其他人會推薦嗎?當我使用PHP進行編程時,我使用xampp,不確定是否支持它。 – user1104854 2012-04-12 13:17:16

+0

我沒有意識到「Ampps」是Apache的windows風格 - 我主要是一個Linux的傢伙,我大多使用Lighttpd。請參閱編輯的答案。 – 2012-04-12 13:20:16

+1

另外,你最好使用mod-wsgi而不是cgi。我將再次編輯答案以反映這一點,並添加鏈接。 – 2012-04-12 13:20:42

相關問題