CGI脚本在标题之前的脚本结束

时间:2017-10-09 10:05:48

标签: python apache cgi

我有一台带有Apache的VPS服务器。我想执行简单的CGI脚本。我创建了一个python脚本,将其保存为.cgi文件并将其放置到文件夹cgi-bin中,但它只显示错误消息:"标题和#34之前的脚本输出结束。

但是,当我将此脚本保存为.py文件并且未将其放入cgi-bin文件夹时,它可以正常工作,但每当出现错误时,它都不显示任何错误消息,只是服务器错误。命令cgitb.enable()没有显示任何错误。

我试图给予文件755权限,但这仍然无法解决我的问题。

哪里可能有问题?

源代码:

#!/usr/local/bin/python3
print("Content-type:text/html")
print("")
print ("<html><head><title>CGI</title></head>")
print ("<body>")
print ("hello cgi")
print ("</body>")
print ("</html>")

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

使用sys.stdout.write并添加\n可能更有用,这样您就可以确切地知道写入标准输出的内容:

#!/usr/bin/env python

import sys
import os

sys.stdout.write('Status: 200 OK\n')
sys.stdout.write('Content-Type: text/html; charset=utf-8\n\n')
sys.stdout.write('<html><body>Hello, world!</body></html>\n')
sys.exit(os.EX_OK)

使用python script.py | cat -e运行脚本,以便验证行结尾。

确保在开始发送内容后不再发送任何HTTP标头。