Apache2 服务器未执行 CGI 脚本

Apache2 服务器未执行 CGI 脚本

我有一个本地 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 将在每次连接时重新检查文件,因此服务器速度会稍微变慢。这是否是个问题当然取决于服务器的启动负载有多大。

相关内容