0

我面临一个独特的问题。我已经设置了 Apache 2.4.1,以下是我的配置:

ServerRoot "prakash_prasad/bin"
AddHandler cgi-script .py
ScriptAlias /~prakash_prasad/ "/x/home/prakash_prasad/public_html/"
ScriptAlias /test/ "/x/test/prakash_prasad/public_html/"
DocumentRoot "/mybox/prakash_prasad/bin/htdocs"
<Directory "/x/test/*/public_html/">
    Options +ExecCGI
    Options ExecCGI
    Order allow,deny
    Allow from all
    Options All
    SetHandler cgi-script
    AddHandler cgi-script .py
    AllowOverride None
    Require all granted
    AddHandler cgi-script .py
    SetHandler cgi-script
    AllowOverride None
    Require all granted
    Options ExecCGI
    Order allow,deny
    Allow from all
    Options All
    SetHandler cgi-script
    AddHandler cgi-script .py
    AllowOverride None
    Require all granted
</Directory>

<Directory "/x/home/prakash_prasad/public_html/*">
    Options +ExecCGI
    Options ExecCGI
    Order allow,deny
    Allow from all
    Options All
    SetHandler cgi-script
    AddHandler cgi-script .py
    AllowOverride None
    Require all granted
    AddHandler cgi-script .py
    SetHandler cgi-script
    AllowOverride None
    Require all granted
</Directory>

现在我有一个示例“first.py”程序转储“Hello World!” 当我在浏览器中输入以下网址时效果很好

http://:ip/test/first.py

但是当我尝试加载 HTML 页面时:

http://:ip/test/index.html

我在浏览器中收到以下错误:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过 you@example.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。

服务器错误日志中可能提供有关此错误的更多信息。

在日志中我看到:

[Thu May 17 23:07:10.664648 2012] [cgid:error] [pid 10386:tid 47977877412864] (13)Permission denied: AH01241: exec of '/x/test/prakash_prasad/public_html/index.html' failed
[Thu May 17 23:07:10.665034 2012] [cgid:error] [pid 9849:tid 1232931136] [client 10.239.40.209:54712] End of script output before headers: index.html

请让我知道我需要更正什么配置?

::更新::

我缩小到一个点,但不确定问题可能是:

当我评论 cgid 模块为我解决了这个问题时:

# LoadModule cgid_module modules/mod_cgid.so

我的 HTML 页面很好,但不是我的 Python 脚本

当我取消注释时

LoadModule cgid_module modules/mod_cgid.so

我的脚本工作正常,但 HTML 文件出错。

知道可能是什么问题吗?

4

2 回答 2

2

使用“Options +ExecCGI”指令,webserver 会将 public_html 下的所有文件视为可执行文件。所以你必须把你的 opython 文件放到一个单独的目录中

ScriptAlias /pyfiles/ /home/x/public_html/pyfiles/

然后把你的html/home/x/public_html/

于 2012-09-20T08:49:04.287 回答
0

尝试删除配置中的重复指令,因为这些可能会导致问题,即第一个目录:

<Directory "/x/test/*/public_html/">
    Options +ExecCGI
    Options ExecCGI
    Order allow,deny
    Allow from all
    Options All
    SetHandler cgi-script
    AddHandler cgi-script .py
    AllowOverride None
    Require all granted
</Directory>
于 2012-05-18T07:31:03.880 回答