Apache 无法通过浏览器处理 Python 脚本 (*.py)

Apache 无法通过浏览器处理 Python 脚本 (*.py)

编辑:操作系统是 CentOS 5

我安装了 Python 2.5.5 并尝试通过浏览器运行一些 Python 脚本。

老实说,我以前没有用过 Python。我尝试将 Python 模块加载到 Apache 中,但它已经加载并被跳过了。我还确认,如果我使 Python 脚本可执行,我就可以从命令行运行它们。

但是当我把“http://www.example.com/test.py“进入我的浏览器,它返回未解析的 HTML 如下:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 root@localhost and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at www.example.com Port 80</address>
</body></html>

我的 httpd.conf 文件中也有以下内容。

AddHandler cgi-script .py

我不知所措,因为我不知道从哪里开始看。这是否让任何人想起了什么?希望我没有忽略任何太明显的东西……

先感谢您。

编辑:在 Apache error_log 中发现以下内容。

[Fri Feb 26 19:58:38 2010] [error] [client xxx.xxx.xxx.xxx] (13)Permission denied: exec of 'test.py' failed
[Fri Feb 26 19:58:38 2010] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test.py
[Fri Feb 26 20:04:56 2010] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.

答案1

apache 的错误 13 表示文件系统权限问题。SElinux
是否已启用?(“ls -laZ test.py”的输出是什么)

我怀疑这是 ScriptAlias 或 AddHandler/ExecCGI 的问题(它们都会让 apache 执行脚本)——因为你得到的是 500 错误,而不是 python 源 apache 显然执行该文件。

答案2

我只使用过 mod_python 来安装 Trac,它们提供了相当明确指示以供其应用。

然而,当我们测试 mod_python 时,我发现本文有帮助的——你可能也会。

答案3

Apache 只会执行位于指定 cgi-bin 目录中的文件。其他所有内容都被视为传递给查看器的内容。您的根目录不会也不应该被标记为此类。

使用ScriptAlias <url-path> <directory>指令设置您的 cgi-bin 目录。例如:ScriptAlias /cgi-bin/ /webroot/cgi-bin/。将您的脚本复制到那里,然后调用http://www.example.com/cgi-bin/test.py。这应该对你有用。

相关内容