in reply to CGI::Simple POST data trouble

A) Are you using mod_perl or not?
B) The error message from CGI::Simple seems pretty explicit to me. The content-length was 31 but it couldn't read any data from STDIN. This is probably because you can only read data *once* from STDIN, so if anything has read the data from STDIN first, CGI::Simple won't then also be able to read the data.

GET type requests don't work like this, as reading the appropate %ENV variable doesn't reset anything. So check to make sure nothing is reading the STDIN before you do -- you might consider scripts started by mod_perl related directives?

C) If you are using mod_perl, I think you want Apache::Request or something similar.

Replies are listed 'Best First'.
Re^2: CGI::Simple POST data trouble
by Fang (Pilgrim) on Jan 11, 2005 at 21:33 UTC
    A) Are you using mod_perl or not?

    Yes. I've been reading the CGI::Simple docs carefully, and you probably know what it says about working alongside mod_perl:

    This module uses Selfloader and the __DATA__ token to ensure that only code that is used gets complied. This optimises performance but means that it will not work under mod_perl in its default configuration. To configure it to run under mod perl you would need to remove two lines from the module.
    use Selfloader; .... __DATA__

    Those two lines are commented in the source code of the module I'm using, so I guess that's enough. As an added bonus, here are the Apache config file and mod_perl startup file I'm using.

    B) The error message from CGI::Simple seems pretty explicit to me. The content-length was 31 but it couldn't read any data from STDIN. This is probably because you can only read data *once* from STDIN, so if anything has read the data from STDIN first, CGI::Simple won't then also be able to read the data.

    OK, makes sense

    GET type requests don't work like this, as reading the appropate %ENV variable doesn't reset anything. So check to make sure nothing is reading the STDIN before you do -- you might consider scripts started by mod_perl related directives?

    As far as I can tell, I have none, except that mod_perl_startup.pl I pasted up there.

    C) If you are using mod_perl, I think you want Apache::Request or something similar.

    OK, will take a look at that and give it a try. Thanks for the help.

Re^2: CGI::Simple POST data trouble
by CountZero (Bishop) on Jan 11, 2005 at 19:28 UTC
    I'm running under mod_perl and I'm quite sure nothing is reading STDIN before my script as the POST requests under CGI.pm run OK, but don't run under CGI::Simple.

    CountZero

    "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law