我想在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
答案 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 按预期打印行。就我而言,标题打印错误。