Date: Wed, 12 Mar 2003 00:21:59 +0100 From: Olivier Dony <olivier@blacktrap.net> To: FreeBSD-questions <freebsd-questions@freebsd.org> Subject: POST data not available in cgi perl scripts Message-ID: <20030311232159.GA11475@vega.blacktrap.net>
next in thread | raw e-mail | index | archive | help
I understand this might be a little off topic but I can only reproduce the problem on one of my FreeBSD server, so it's not that much OT. It's very simple, the data from a HTTP POST never reaches my CGI perl scripts. There are no errors in the server log, the CGI executes fine, no debug with CGI::Carp, etc.. only thing is that the POST data is always empty. And that no matter what browser I use of course. Also I'm using CGI.pm, but handling it by hand yields the same results. The POST DATA is always empty. Though if I run my script with 'perl -c' in interactive mode and POST something it works ok and the script gets my POST DATA without problem. Displaying the %ENV shows the correct QUERY_STRING when using GET, but with POST the POST DATA never makes it to the script. This happens only on one of my FreeBSD : 4.7-RELEASE, apache 1.3.27, system perl v5.005_03, whereas the same CGI scripts run fine on my other 5.0-RELEASE and 4.4-RELEASE, with the same apache version, and perl different or the same. I have no idea where or what I could look to solve the problem. Maybe others have had the same issue or any perl/cgi gurus have any ideas for me? I will be glad to provide any additional info or config files. TIA a lot for any hints -- Olivier PS: An example of a very basic test that fails, I POST into this CGI script, and the output of the POST data is empty, though CONTENT_LENGTH is correct : <FILE post.cgi> #!/usr/bin/perl -w print "Content-type:text/html\n\n"; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "DATA: [$buffer]<br>\n"; # <- nothing output between the brackets here @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } print "<html><body>"; foreach $key (keys(%FORM)) { print "$key = $FORM{$key}<br>"; } # ^^^^^^^^^^^ here my output is always empty too foreach $key (sort(keys %ENV)) { print "$key = $ENV{$key}<br>\n"; } print "</body></html>"; </FILE post.cgi> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030311232159.GA11475>