Python shebang 行

Python shebang 行

我正在尝试使用 apache2 将 Python 中的脚本作为 cgi 脚本执行。但是,文件并没有执行,而是被下载了。我已允许我的 Python 文件成为可执行文件。我认为发生这种情况是因为我的 shebang 行不正确。那么我怎么知道要添加的正确 shebang 行是什么呢?我安装了 Ubuntu 16.04 和 python 3.5.2。任何帮助/指导都将大有帮助。谢谢

编辑

添加 Python 脚本

#!/usr/bin/env python

import cgi
form = cgi.FieldStorage() 
query = form.getvalue('query')
print("Content-type:text/html")
print()
print("<html>")
print("<head>")
print("<title>search results</title>") 
print("</head>")
print("<body>")
print("\
<div style = 'position:absolute;text-align:center;width:100%;left:0%;top:0%;margin:0%;padding:0%;'>\
<h4 style = 'font-family:Arial;font-size:24px;color:dodgerblue;'>muGoogle</h4>\
<form class='form-wrapper' action='hello.py' method='get'>\
    <input type='text' id='search' placeholder='Search docs related to...' required name = 'query' style = 'font-family:Arial;font-\size:14px;width:60%;height:40px;'/>\
    <input type='submit' value='Submit' id='submit' style = 'height:40px'>")
print("<p> search results for: %s </p>" % query)
print("</body>")
print("</html>")

编辑2

添加 html

<html>
<head>
<title>muGoogle</title>
<link type = 'stylesheet' ref = 'style.css'>
</head>
<body>
<div style = 'position:absolute;text-align:center;width:100%;left:0%;top:15%;margin:0%;padding:0%;'>
<h4 style = 'font-family:Arial;font-size:48px;color:dodgerblue;'>muGoogle</h4>
<form class='form-wrapper' action='query.py' method='get'>
    <input type='text' id='search' placeholder='Search docs related to...' required name = 'query' style = 'font-family:Arial;font-size:14px;width:60%;height:40px;'/>
    <input type='submit' value='Submit' id='submit' style = 'height:40px'>
</form>
</div>
</body>
</html>

编辑3

添加默认配置文件

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks MultiViews
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options ExecCGI Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all 
        AddHandler cgi-script .py
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin/">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

答案1

如果文件被下载而不是由 Apache 运行,则表明运行该文件所需的模块尚未被 Apache 加载。对于 Python,有几个模块可以使用。这里使用的模块似乎是简单的 CGI 模块,因此请执行以下操作:

sudo a2enmod cgi
sudo service apache2 restart

相关内容