CGI 脚本在标头之前结束脚本



我有一个带有Apache的VPS服务器。我想执行简单的CGI脚本。我创建了一个python脚本,将其保存为.cgi文件并将其放入文件夹cgi-bin,但它仅显示错误消息:"脚本输出结束于标头"。

但是,当我将此脚本保存为.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>")

谢谢你的回答。

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

#!/usr/bin/env python
import sys
import os
sys.stdout.write('Status: 200 OKn')
sys.stdout.write('Content-Type: text/html; charset=utf-8nn')
sys.stdout.write('<html><body>Hello, world!</body></html>n')
sys.exit(os.EX_OK)

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

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

最新更新