我认为将一种常见的方法添加到Apache Web服务器是将它配置为:
ScriptAlias /php5.3 /usr/local/php5.3/bin
Action application/php5.3 /php5.3/php-cgi
AddType application/php5.3 .php
Run Code Online (Sandbox Code Playgroud)
现在我尝试为Python编写类似的配置:
ScriptAlias /python /usr/bin
Action application/python /python/python
AddType application/python .py
Run Code Online (Sandbox Code Playgroud)
我有一个小的测试脚本,如下所示:
print "Content-Type: text/html\n\n"
print "Test"
Run Code Online (Sandbox Code Playgroud)
但是,由于apache错误日志显示以下内容,因此似乎有些错误:
Premature end of script headers: python
Run Code Online (Sandbox Code Playgroud)
所以我的第一个问题是我的python响应不对.但是有Content-Type和两个换行符.此外,调用的类似PHP脚本的输出也提供php-cgi了完全相同的输出.
此外,我还没有找到一个教程,展示如何让python以这种方式工作.也许这是不可能的,但后来我很好奇为什么会这样呢?或者我错过了什么?
Jim*_*imB 13
您可以将任何类型的可执行文件用作cgi.您的问题出在您的apache配置中,看起来就像您刚刚编写的那样.查看apache文档以获取更多详细信息,但不需要Action和AddType.
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Run Code Online (Sandbox Code Playgroud)
然后将以下内容放入cgi-bin:
#!/usr/bin/python
# test.py
print "Content-Type: text/html\n\n"
print "Test"
Run Code Online (Sandbox Code Playgroud)
确保它是可执行的,并在/cgi-bin/test.py中查看结果
"所以也许这是不可能的,但后来我很好奇为什么会这样呢?"
正确.这是不可能的.它也从来没有打算过.
原因1 - Python不是PHP.PHP - 作为一个整体 - 期望成为CGI.Python没有.
原因2 - Python本质上不是CGI.这是一个(几乎)没有环境期望的翻译.
原因3 - Python从未被设计为CGI.这就是为什么Python通常嵌入到小包装器(mod_python,mod_wsgi,mod_fastcgi)中,它可以将CGI环境封装为对正在运行的Python程序更有意义的形式.
| 归档时间: |
|
| 查看次数: |
13945 次 |
| 最近记录: |