【问题标题】:Internal Server Error 500 thrown from perl script -but script works fineperl 脚本抛出内部服务器错误 500 - 但脚本工作正常
【发布时间】:2011-07-04 07:11:09
【问题描述】:

我有一个通过 Ajax 调用的 perl 脚本。它只是将 3 个值写入数据库。代码工作正常(值被成功写入),但我得到一个“内部服务器错误”抛出。错误日志显示“脚本头过早结束”。

应用程序没有问题 - 它可以按要求工作,并且可以使用几个月 - 但我在测试其他东西时通过 Firebug 注意到了错误。

所以我开始从脚本中删除 perl 以尝试定位问题.. 并继续直到我只剩下两行.. shebang 和 exit.. 我仍然收到 500 错误。直接从浏览器运行脚本会在浏览器窗口中出现 500 错误......从命令提示符下它很好 - 即。 apache错误日志中没有任何内容。

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

【问题讨论】:

    标签: perl internal-server-error


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您正在写入数据库并且不需要将任何内容发送回客户端,则正确的响应是状态 204:

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

      这让服务器很高兴,因为它正在发送一个完整的标头集,并告诉客户端请求成功并且没有要处理的响应正文。

      【讨论】:

      • 谢谢...我现在明白了! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多