gpt4 book ai didi

perl Apache2::Request 错误同时使用 param() 和 upload() 方法

转载 作者:行者123 更新时间:2023-12-02 02:19:50 26 4
gpt4 key购买 nike

我在 mod_perl 环境中编码并使用 Apache2::Request 模块获取发布的数据。这工作正常,除了当我还使用 Apache2::Request 对象上传文件/获取文件的文件句柄时。如果单独使用这些方法,则没有问题。但是,如果我在同一个子例程中同时使用它们,我的 Apache 日志文件中会出现此错误:

[notice] child pid 27383 exit signal Segmentation fault (11)

这是我的代码:

my $r = shift;
use Apache2::Request;
use Apache2::Upload;
my $req = Apache2::Request->new($r, POST_MAX => 10 * 1024 * 1024,DISABLE_UPLOADS => 0);
my $img_url = $req->param('url');

my $upload = $req->upload('files[]');
my $filename = $upload->filename;
my $upload_filehandle = $upload->fh;
my $file_size = $upload->size;

Apache2::Upload 被包括在内,因为它被 Apache2::Request 使用。就像我说的,如果我注释掉以“my $img_url..”开头的行或上传部分,它就可以正常工作。但是,如果它们都出现在代码中,我会收到 502 代理错误,并且该错误会出现在 apache 日志文件中。

提前致谢!

最佳答案

我感谢这是一个老问题,所以我的回复有点晚了,但如果其他人偶然发现这个话题,我确实有一个解决方案。

问题是 New() 的 mod_perl 错误:

my $req = Apache2::Request->New($r);

(在你的情况下,你在那里定义了一些其他的东西,但它看起来与我所遭受的相同的段错误和偶发症状)。

Apache2::Request segfaults when $r isn't define,但有时它似乎会出现段错误,即使你已经将 @_ 转移到 $r(正如你所做的那样)。我无法解释为什么会发生这种情况,但我发现一个简单的更改可以阻止此问题的发生:

my $req = Apache2::Request->New(Apache2::RequestUtil->request);

因此您的代码大概如下所示:

my $req = Apache2::Request->new(Apache2::RequestUtil->request,
POST_MAX => 10 * 1024 * 1024,
DISABLE_UPLOADS => 0);

关于perl Apache2::Request 错误同时使用 param() 和 upload() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com