On Aug 4, 2022, at 5:09 AM, pengyh <pen...@mail.de> wrote: >> LoadModule apreq_module modules/mod_apreq2.so >> in your httpd.conf? > > yes. as you see: > lrwxrwxrwx 1 root root 27 Aug 4 14:00 perl.load -> > ../mods-available/perl.load > lrwxrwxrwx 1 root root 29 Aug 4 14:01 apreq2.load -> > ../mods-available/apreq2.load > > >> Have you tried it with mpm_prefork? > > the development environment is mpm_prefork. > >> What version of Apache and mod_perl are you using exactly? > > Apache/2.4.41 (Ubuntu) mod_apreq2-20101207/2.8.0 mod_perl/2.0.11 Perl/v5.30.0 > configured > > > ubuntu 20.04 x64 OS.
I presume you installed these things using apt-get? Is Apache2::Request version 2.16? I apologize in advance if the following suggestions are obvious things you've already tried: Could you try changing the handler to log or display the values of $ts and $key? What do they contain if anything? I'd log or display $r->as_string as well. Also, try putting an eval { } block around the code inside your handler and then log or display the value of $@. Something like this: package MyApacheAccessHandler; use strict; use Apache2::RequestRec (); use Apache2::RequestIO (); use Apache2::Connection (); use APR::Table (); use Apache2::Const -compile => qw(OK FORBIDDEN); use Apache2::ServerUtil (); use Apache2::Log (); use Apache2::Request; use Digest::MD5 qw(md5_hex); sub handler { my $r = shift; my $s = Apache2::ServerUtil->server; eval { $s->log_error("r = ", $r->as_string); my $req = Apache2::Request->new($r); my $ts = $req->param("timestamp"); my $key = $req->param("authkey"); my $digest = md5_hex($ts); $s->log_error("ts = ", $ts); $s->log_error("key = ", $key); $s->log_error("digest = ", $digest); }; if ($@) { $s->log_error("exception: ", $@); } return $key eq $digest ? Apache2::Const::OK : Apache2::Const::FORBIDDEN; } After testing the above, what's does the error_log file show? Later, Ed