2011-02-25 30 views
2

我有一个perl脚本通过Ajax调用。它只是将3个值写入数据库。代码工作正常(值得到写入成功),但我得到一个“内部服务器错误”引发。 Errorlog说“脚本标题的提前结束”。从Perl脚本引发的内部服务器错误500 - 但脚本工作正常

应用程序没有问题 - 它可以根据需要运行几个月 - 但在测试其他内容时我通过Firebug发现了错误。

因此,我开始剥离脚本中的perl,试图找到问题..并继续,直到我只剩下两行.. shebang和exit ..我仍然得到500错误。直接从浏览器运行脚本会在浏览器窗口中显示500错误...从命令提示符处可以正常运行 - 即。没有在Apache的错误日志。

服务器配置没有任何问题 - 它有数百个perl脚本,并且已运行多年。

回答

3

如果你正在写的数据库,不需要任何发送回客户机的正确响应状态204:

print "Status: 204 No Response\n\n"; 

这是因为它发送一个完整的报头组,使服务器开心,并告诉客户端该请求是成功的,并且没有响应主体进行处理。

+0

谢谢...我现在明白了! :) – Upland 2011-02-25 20:15:47

8

您应该先输出一个有效的CGI标题。

服务器期望CGI脚本的第一个输出是CGI头。通常这可能与print "Content-type: text/plain\n\n";或CGI.pm及其衍生产品print header()一样简单。

+0

谢谢..修复它。 – Upland 2011-02-25 14:44:11

+0

但仍不确定为什么 – Upland 2011-02-25 14:46:31

相关问题