【发布时间】:2012-02-27 01:35:45
【问题描述】:
我正在尝试使用 Apache 执行 Python 程序。但是,Apache 只会提供文件而不实际执行它。该文件的权限为 r/w/x,位于/var/www 中。我会贴出httpd.conf的内容和之后的程序代码。我还尝试将 python 脚本作为.cgi 文件运行,但效果不佳。我也将 mod_python 和 mod_wsgi 模块都加载到了 apache 中。
Python 示例:
#!/usr/bin/python
# enable debugging
import cgitb
cgitb.enable()
print "Content-Type: text/plain\r\n\r\n"
print
print "Hello World!"
httpd.conf:
AddHandler cgi-script .cgi .pl
AddHandler python-program .py
我知道它是一个小的 httpd.conf 文件,但是当我安装 apache 时,文件中没有任何内容。我还应该提到,这只是为了让我学习在 apache 中运行 python 的基础知识。它不适用于生产。 感谢您的帮助!
编辑
我使用的操作系统是 Ubuntu 10.04,apache 的版本是 2。我有 python 版本 2.6,它会在调用 #!/usr/bin/env python 时自动使用。
我收到两个主要错误,第一个是即使文件和文件夹的权限为 777 也找不到文件。日志中的错误是
[Sun Feb 05 13:29:44 2012] [error] [client 192.168.1.3] File does not exist: /var/www/poit-0.1
这个错误是针对我没有编写的另一个 python 脚本。奇怪的是,当从浏览器窗口访问该文件时,该文件会显示在文件夹的索引中。但是,当我导航到该文件时,出现上述错误。
我得到的另一个错误是标题过早结束。错误如下:
[Sun Feb 05 12:10:19 2012] [error] (8)Exec format error: exec of '/var/www/pyth.py' failed
[Sun Feb 05 12:10:19 2012] [error] [client 192.168.1.3] Premature end of script headers: pyth.py
【问题讨论】:
-
从技术上讲,CGI 脚本不会在 in httpd... 中运行
-
我知道它们没有在实际文件中运行,因为它是一个配置文件...
-
不,它们不在同一个进程中运行; CGI 程序作为单独的进程运行。