使用 Apache2 服务 python CGI 脚本
Serving python CGI script with Apache2
我正在尝试从网页调用 Python 脚本,但 apache2 未执行该脚本。这些文件是:
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)
.
行的列表
打开页面时我可以看到表格,但是当我单击 'Submit' 时浏览器提示下载 test.py
(FF) 或查看它 (Chrome) .知道我在这里弄错了什么吗?
如评论中所述。此目录配置看起来像是来自示例的普通副本,而您的 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 的配置方式密切相关。
我正在尝试从网页调用 Python 脚本,但 apache2 未执行该脚本。这些文件是:
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)
.
打开页面时我可以看到表格,但是当我单击 'Submit' 时浏览器提示下载 test.py
(FF) 或查看它 (Chrome) .知道我在这里弄错了什么吗?
如评论中所述。此目录配置看起来像是来自示例的普通副本,而您的 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 的配置方式密切相关。