来自脚本index.py标头错误的标头

时间:2016-01-16 08:54:10

标签: python apache

我想在apache2(ubuntu 14.04)服务器上运行python代码。我已按照这些步骤获取错误:

第1步:

配置1:我在

下创建了一个目录和文件
/var/www/cgi-bin

配置2:我已经编辑过/etc/apache2/sites-available/000-default.conf

Alias /cgi-bin /var/www/cgi-bin
<Directory "/var/www/cgi-bin">
Options Indexes FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .py
Allow from all
</Directory>

<Directory /var/www/cgi-bin>
Options All
</Directory>

第2步:

我的python脚本是:index.py

#!/usr/bin/env python
import cgi;
import cgitb;cgitb.enable()

print "Content-Type: text/plain\n"

print "<b>Hello python</b>"

第3步:

当我使用chrome浏览器时:     网址:http://localhost/cgi-bin/index.py

第4步:

我在错误日志中收到此错误

malformed header from script 'index.py': Bad header: Hello Python

3 个答案:

答案 0 :(得分:15)

你应该用$("#from") .datepicker({ defaultDate: "+1w", changeMonth: true, numberOfMonths: 1, altField: "#alternate", altFormat: "MM d, yy", onClose: function (selectedDate) { $("#to").datepicker("option", "minDate", selectedDate); $("#alternate").focus().blur(); } }); $("#alternate") .autoResizeInput({ maxWidth: 18, minWidth: 11, comfortZone: 5 }) .focus() .blur(); 结束你的标题,然后你必须打印另一个\r\n来表示身体即将到来。

(换句话说,它将你的身体解释为标题,因为标题永远不会被终止)

答案 1 :(得分:6)

试试这个剧本

#!/usr/bin/env python
import cgi;
import cgitb;cgitb.enable()

print "Content-Type: text/html"
print "" #use this double quote print statement to add a blank line in the script
print "<b>Hello python</b>"

标题和主要html内容之间应该有一个行间距。这就是为什么我们必须在脚本中启动html标签之前使用额外的print语句。

答案 2 :(得分:1)

当您需要打印文件时,我遇到了刷新机制的问题。 如果通过例如调用此代码响应 http 请求apache2.

import sys

print("Content-type: image/png", end="\r\n\r\n", flush=True)
sys.stdout.buffer.write(bytes(open("file.png","rb").read()))

end="\r\n\r\n" 添加一个空行开始正文

flush=True 强制 python 按预期打印行。就我而言,标题打印错误。