I tried the C code below and I get post data from Apache fine.

Now I tried to test that php gets data on stdin and that appears to
fail.  Maybe I tested wrong, can anyone verify if this test should
work?

Step 1: Set 'post_max_size = 1' in php.ini

Step 2: Send html form post to this code:
<?php
    if($_ENV['REQUEST_METHOD'] == 'POST')
    {
        if (strcasecmp($_ENV['REQUEST_METHOD'], 'POST') == 0)
        {
            $cl = $_ENV['CONTENT_LENGTH'];
            $stdin = fopen('php://stdin', 'r');
            if(!$stdin) {print('Error opening stdin'); exit(1);}
            $raw_data = fgets($stdin, $cl);
            fclose($stdin);
            print("STDIN<br>STRLEN = ".strlen($raw_data));
            print('<pre>');
            print($raw_data);
            print('</pre>');
        }
    }
    print('<hr>ENV<pre>');
    print_r($_ENV);
    print('</pre>');
?>


ENV variables all look correct.  stdin ($raw_data) appears to be
empty, strlen returns 0.  The CONTENT_LENGTH environment variable is
reported correctly and changes according to how much data is posted.

Is fopen('php://stdin', 'r'); the correct way to read from stdin?

Are there any other ways to read from stdin?

Is post_max_size = 1 a valid setting?

--
Andy


On Wed, Aug 04, 2004 at 11:18:26PM -0500, AJL wrote:
> 
> Yeah, I would expect a 50x response for a Deny from all.  I tried 
> adding the Limit directive to .htacces in both the cgi directory and
> the www directory, no luck:
> <Limit POST>
>     Order Allow,Deny
>       Allow from all
> </Limit>
> 
> I found this C code:
> ftp://ftp.ncsa.uiuc.edu/Web/httpd/Unix/ncsa_httpd/cgi/cgi-src/post-query.c
> 
> and compiled it and redirected my sample code (posted earlier) and I
> get the posted form variables fine.  So maybe Apache CGI setup is
> working okay.
> 
> The next logical step seems to be to see what php is getting on stdin
> and what environment variables are set.  I know I can check the
> environment variables with $_ENV.  Anyone know how I can get an exact
> copy of the data that was passed on stdin?
> 
> --
> Andy
> 
> On Thu, Aug 05, 2004 at 03:20:23AM +0000, Curt Zirzow wrote:
> > * Thus wrote AJL:
> > > On Wed, Aug 04, 2004 at 02:55:16PM -0700, Justin Patrin wrote:
> > > > 
> > > > Sounds like Apache just isn't passing in POST data. Are you *sure*
> > > > there's Apache directive for this?
> > > Yeah, that's what I'm thinking more and more, apache not passing it in
> > > or in a way that php is not understanding.
> > > 
> > > Anyone know of possible apache settings/directives that affect how CGI
> > > programs are invoked and/or how data is passed to them?
> > 
> > <Location /cgi-bin> # or similar
> >   <Limit POST>
> >     Order deny,allow
> >     Deny from all
> >   </Limit>
> > </Location>
> > 
> > But, you technically should get a 50x error with that.
> > 
> > 
> > Curt
> > -- 
> > First, let me assure you that this is not one of those shady pyramid schemes
> > you've been hearing about.  No, sir.  Our model is the trapezoid!
> > 
> > -- 
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to