我有一个本地 Apache2 服务器(安装了 LAMP)。Apache2 目录是/etc/apache2
,我的文档根目录是/var/www
。在文档根目录下,有一个/cgi-bin
目录,我的脚本就位于其中cgi.py
。执行 with./cgi.py
会给出所需的输出,但是当我将 Web 浏览器指向该文件时,它会提示我下载它。显然,这通常是由于访问问题,但添加a+x
文件权限后问题仍然存在。
以下是简单的脚本:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
#enable debugging
import cgitb
cgitb.enable()
print("Content-Type: text/plain;charset=utf-8");
print()
print("Hello World!");
在 apache2 目录中httpd.conf
我添加了以下内容(之前它是空的):
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
Options ExecCGI
AddHandler cgi-script .cgi .py
</Directory>
脚本无法执行的原因可能是什么?
编辑:新手错误,我在更改后没有重新启动服务器httpd.conf
。 执行此操作后,脚本执行。 感谢 Jenny D 的建议。
答案1
服务器只会在启动时或您明确指示其重新加载时读取其配置文件。更改 httpd.conf 后,您需要重新启动服务器或重新加载配置(通过运行apachectl restart
或运行service httpd reload
或其他方式,具体取决于您的操作系统/设置)。
如果你想要一个无需重启服务器就能重新读取的配置,那么访问控制。但是,由于这意味着 Apache 将在每次连接时重新检查文件,因此服务器速度会稍微变慢。这是否是个问题当然取决于服务器的启动负载有多大。