【问题标题】:unexpected Perl CGI.pm error when posting from multipart/form-data从 multipart/form-data 发布时出现意外的 Perl CGI.pm 错误
【发布时间】:2015-06-16 23:34:00
【问题描述】:

我之前通过快速修复解决了这个问题两次。现在我不记得那个快速修复是什么了,我还是想把它修好。

当我从enctype="multipart/form-data"的形式发帖,然后在目标脚本中新建一个CGI对象,即:

my $query = new CGI;

我的 apache 错误日志中出现以下错误:

Malformed multipart POST: data truncated, referer: http...

我已经通过在上述语句之前和之后放置 die 语句来确认这是发生错误的地方。这正是我以前遇到的问题。

我在 Windows XP、Perl 5.8.8 上运行。多年来,我使用过各种 linux 服务器,但从未在其中任何一个服务器上遇到过这个问题。

之前解决问题的方法是降级到稍旧的 CGI.pm 版本。今天我想我会尝试升级到最新版本,因为我已经有一段时间没有尝试更新版本了。但是 CGI.pm 4.20 仍然会产生同样的错误。

表格上是否有任何数据都没有关系。当它发布时,会生成错误。如果没有enctype="multipart/form-data",则不会发生错误。

我不愿意升级到更新版本的 Perl,因为我的东西正好在我想要的地方,我不想冒险搞砸。

有什么想法或想法吗?

编辑:我使用什么浏览器都没有关系,而且我不记得我降级到的 CGI.pm 版本,这就是为什么我说我不记得快速解决。

Edit2:这是我的表单的确切代码:

<form action="/prgs/gbc4_members_account.cgi" method="post"
enctype="multipart/form-data"> <input type="hidden" name="action"
value="update"> <input type="file" name="test"> <input type="submit"
value="submit"> </form>

现在它不会导致内部服务器错误,我无法为我尝试在表单上上传的文件创建有效的文件句柄。所以问题终究没有解决。我想这只是我的一厢情愿。

【问题讨论】:

  • 请在CGI-&gt;new 之前添加行use Data::Dumper; warn Dumper [&lt;STDIN&gt;]; 之前 并发布您获得的输出。也很高兴看到您的 HTML 表单
  • 对不起,我在下面发帖时没有看到这个。我按照您的指示进行操作,现在一切正常。谢谢!
  • 如果删除该行解决了问题,那么听起来 STDIN 是空的。如果您有兴趣正确修复此问题,请展示您的 HTML 吗?
  • 我确实注意到在将文件输入添加回表单后出现错误。错误日志显示:$VAR1 = [],尽管这不会产生内部服务器错误。我不熟悉 data::dumper 及其工作原理,否则我会早点提到这一点。

标签: forms apache perl


【解决方案1】:

好的,在我将文件输入添加到表单后,这里是对错误日志的更广泛阅读:

------WebKitFormBoundaryVLrUuePcs8gqhOtJ\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] 'Content-Disposition: form-data; name="action"\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] '\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] 'update\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] '------WebKitFormBoundaryVLrUuePcs8gqhOtJ\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] 'Content-Disposition: form-data; name="test"; filename=""\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] 'Content-Type: application/octet-stream\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] '\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] '\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ',, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] '------WebKitFormBoundaryVLrUuePcs8gqhOtJ--\r, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ', referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:49 2015] [error] [client 127.0.0.1] ];, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi
[Tue Jun 16 17:56:50 2015] [error] [client 127.0.0.1] $VAR1 = [];, referer: http://gbc4.loc/prgs/gbc4_members_account.cgi

【讨论】:

  • 更新:现在它工作得很好。我不知道为什么。这是确切的形式:
    同样,没有错误。
  • 请更新您的原始问题并将html表单放在那里;也请使用此版本进行自卸车诊断Data::Dumper-&gt;new([join '', &lt;STDIN&gt;])-&gt;Useqq(1)-&gt;Dump
  • 您告诉我使用的 data::dumper 语句不起作用。无法通过包“Data::Dumper”定位对象方法“new”
  • 如果你删除 use Data::Dumper; 那么这可能会发生
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2018-08-04
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 2018-12-31
相关资源
最近更新 更多