Python CGI 脚本错误:头文件前的脚本输出结束

Posted

技术标签:

【中文标题】Python CGI 脚本错误:头文件前的脚本输出结束【英文标题】:Python CGI Script Error: End of script output before headers 【发布时间】:2015-04-04 19:11:38 【问题描述】:

我收到内部服务器错误(500 错误)“头文件前脚本输出结束”尝试使用

运行 cgi Windows 上的 XAMPP Apache Python 3.3 带有 UNIX 样式 (\n) 换行符的 Notepad++

我的脚本如下

#!"C:\Python33\python.exe"

import cgi

def htmlTop():
    print("Content-type: text/html")
    print()
    print("""<!DOCTYPE html>
            <html lang="en">
                <head>
                        <meta charset="utf-8"/>
                        <title>My Server Side Test</title>
                </head>
                <body>""")

def htmlTail():
    print("""</body>
        </html>""")

if ___name___ == "__main__":
    try:
        htmlTop()
        print("Hello World")
        htmlTail()
    except:
        cgi.print_exception()

请注意,我尝试使用print("Content-type: text/html\n\n"),而不是额外的打印语句。谢谢!

【问题讨论】:

【参考方案1】:

我知道这是一篇旧帖子,但我在您的脚本中发现了错误

我发现的第一个错误是你在需要 python 时使用的引用, 所以 #!"C:\Python33\python.exe" 应改为#!C:\Python33\python.exe

我发现的第二个错误是你使用的附加栏 There are 3 bars here-&gt;___name___&lt;-and here 所以 ___name___ 应改为__name__

所以最终的代码应该是

#!C:\Python33\python.exe

import cgi

def htmlTop():
    print("Content-type: text/html")
    print()
    print("""<!DOCTYPE html>
        <html lang="en">
            <head>
                    <meta charset="utf-8"/>
                    <title>My Server Side Test</title>
            </head>
            <body>""")

def htmlTail():
    print("""</body>
    </html>""")

if __name__ == "__main__":
    try:
        htmlTop()
        print("Hello World")
        htmlTail()
    except:
        cgi.print_exception()

【讨论】:

以上是关于Python CGI 脚本错误:头文件前的脚本输出结束的主要内容,如果未能解决你的问题,请参考以下文章

脚本头过早结束:CGI、Nagios、LDAP

如何使用 cgi python 脚本在浏览器中显示 pdf 文件内容及其全名?

Python CGI 脚本 IOError Broken Pipe

在 REBOL2 中输出到标准错误?

Apache服务器中的Python Cgi脚本

Apache服务器中的Python Cgi脚本