2016-05-31 96 views
0

我想從網頁調用Python腳本,而且apache2沒有對腳本進行操作。這些文件是:用Apache2服務python CGI腳本

test.py

#!/usr/bin/env python 
print "Content-type: text/html\n\n" 
print "<h1>Hello World</h1>" 

的index.html

<form action="./test.py" method="POST"> 
    <input type="text" size="70" name="data" value=""><br> 
    <input type="submit" value="Submit"> 
    <input type="reset" value="Reset"> 
</form> 

我已經啓用a2enmod cgi和編輯apache的設置如下:

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80> 
... 
<directory "/usr/lib/cgi-bin"> 
    AllowOverride None 
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
    AddHandler cgi-script .py 
    Require all granted 
</directory> 
</VirtualHost> 

頁面文件所有權是:

# ls -lh /var/www/html/ 
total 16K 
-rw-r--r-- 1 root root 342 May 30 13:34 index.html 
-rwxr-xr-x 1 root root 88 May 30 14:11 test.py 

運行apachectl -M帶來了線cgid_module (shared)列表。

當我打開頁面時,我可以看到表格,但是當我點擊'提交'時,瀏覽器會提示下載test.py(FF)或查看它(Chrome)。任何想法我在這裏發生錯誤?

+0

檢查元信息標籤是否有效的一個好方法是使用Ctrl + Shift + J並檢查網絡標籤和py腳本的返回內容類型。 Chrome會說什麼,文本/純文件?我猜你已經重新加載了服務器配置? – Torxed

+0

你在Chrome和FF中提出的屏幕截圖 - http://imgur.com/a/lGkN5 – geotheory

+0

我正在通話,所以無法寫出正確的答案。你的mime信息是錯誤的,你的py文件的內容類型是「document」,py腳本沒有註冊爲處理程序。現在看看https://httpd.apache.org/docs/2.4/mod/mod_mime.html – Torxed

回答

0

正如評論中所述。該目錄配置看起來像來自示例的普通副本,並且您的Web根目錄可能位於其他位置。

<VirtualHost *:80> 
    <directory "/var/www/htdocs"> 
     AllowOverride None Options 
     +ExecCGI -MultiViews 
     +SymLinksIfOwnerMatch 
     Order allow,deny 
     Allow from all 
     AddHandler cgi-script .py 
     Require all granted 
    </directory> 
</VirtualHost> 

例如,其中目錄被改變。這通常是默認路徑,如果你的是/var/www/html相應地改變。

我已經得到了這個早些時候的狗屎,但這個問題可能也會更好關閉serverfault考慮到這與apache應該如何配置嚴格相關。

+0

Thanks Torxed。我同意serverfault是理想情況下更好,但我被說服了3X更多的apache帖子在SO .. – geotheory

+0

@創作我起初太,但我想獲得更頻繁的用戶羣,所以搜索相關的服務器的東西結束那裏嘿嘿。很高興它在這個時候成功了:)而且你非常歡迎! – Torxed