簡體   English   中英

Python CGI腳本正在下載而不是運行

[英]Python CGI script is downloading instead of running

我正在使用apache2開發Ubuntu 16.04LTS。 我正在執行一個簡單的CGI python腳本“ hello.py”。 但是,不是執行文件,而是下載文件。 如果將擴展名從“ .py”更改為“ .cgi”,則代碼將顯示在瀏覽器中。

我的CGI腳本保存在/ var / www / cgi-bin目錄中,並寫在下面

import cgitb
cgitb.enable()    
print("Content-Type: text/html;charset=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>'

我遵循了CGI教程 本教程遵循ScriptAlias方法配置apache2。 按照教程,我將以下代碼添加到apche2.conf文件的末尾

#########     Adding capaility to run CGI-scripts #################
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

而且我已經將conf-available / serve-cgi-bin.conf文件更改為以下形式

<IfModule mod_alias.c>
        <IfModule mod_cgi.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfModule mod_cgid.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfDefine ENABLE_USR_LIB_CGI_BIN>
                ScriptAlias /cgi-bin/ /var/www/cgi-bin/
                <Directory "/var/www/cgi-bin">
                        AllowOverride None
                        Options +ExecCGI
                        #Require all granted
                </Directory>
        </IfDefine>
</IfModule>

我的CGI腳本仍在下載而不是運行。 如何解決這個問題呢 ?

我已經解決了。 編輯配置文件后,還有一步要做。在/etc/apache2/mods-available目錄中,您可以看到apache2的已安裝模塊。 cgi.load是CGI文件的模塊。 默認情況下未啟用。 使用這些命令啟用它們。

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/cgi.load

然后重新加載服務器

$ sudo service apache2 reload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM