Avi*_*dok 0 python apache macos cgi
我是python的新手,我正在尝试运行一个简单的脚本(在Mac上,如果这很重要).
现在,这段代码,给我内部服务器错误:
#!/usr/bin/python
print 'hi'
Run Code Online (Sandbox Code Playgroud)
但这个就像一个魅力(只有额外的'打印'命令):
#!/usr/bin/python
print
print 'hi'
Run Code Online (Sandbox Code Playgroud)
任何解释?谢谢!
更新:
当我从终端运行这个脚本时,一切都很好.但是当我从浏览器运行它时:
http://localhost/cgi-bin/test.py
Run Code Online (Sandbox Code Playgroud)
我得到这个错误(再次,只有我没有添加额外的打印命令).我当然使用Apache服务器.
看起来您将脚本作为CGI脚本运行(您的编辑确认您使用的是CGI)
...并且首字母(空)print需要表示标题的结尾.
检查Apache的错误日志(/var/log/apache2/error.log可能),看它是否显示" 脚本标题的过早结束 "(此处有更多信息).
编辑:更多解释:
Apache中的CGI脚本负责生成自己的HTTP响应.
HTTP响应由标题块,空行和所谓的正文内容组成.即使您应该生成一些标题,也不是必须这样做.但是,您确实需要输出空行; Apache期望它存在,如果不存在(或者如果你只输出一个无法解析为标题的主体),Apache将产生错误.
这就是为什么你的第一个版本不起作用,但你的第二个版本没有用:添加空白print添加了Apache所期望的所需空行.
这也有效:
#!/usr/bin/env python
print "Content-Type: text/html" # header block
print "Vary: *" # also part of the header block
print "X-Test: hello world" # this too is a header, but a made-up one
print # empty line
print "hi" # body
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2800 次 |
| 最近记录: |