Bug #12426 Updated: Critical PHP bug while processing big POST data (>10K)
| From: | rasmus@php.net | Date: | Thu, 02 Aug 2001 23:46:58 +0000 |
| Subject: | Bug #12426 Updated: Critical PHP bug while processing big POST data (>10K) | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-61897@lists.php.net to get a copy of this message | ||
ID: 12426
Updated by: rasmus
Reported By: dk@dklab.ru
Status: Open
Bug Type: HTTP related
Operating System: RedHat Linux 7.0 2.2.16-22smp
PHP Version: 4.0.6
New Comment:
Must be something related to that russian module you have loaded in your Apache
Previous Comments:
------------------------------------------------------------------------
[2001-08-02 19:16:24] dk@dklab.ru
Well, some days ago I had tried to patch PHP myself. No result :-( I have found that PHP does not
get POST data larger than about 4000 bytes (3996). There is a constant in SAPI.h:
#define SAPI_POST_BLOCK_SIZE 4000
I understand that this constant explains the block size, which is used by PHP to read data from
stdin in function:
SAPI_POST_READER_FUNC(sapi_read_standard_form_data)
in SAPI.c.
It is very VERY weird, but when I set SAPI_POST_BLOCK_SIZE to, for example, 10000, POST data is
cutted by 4000 bytes again (not 10000, as I expected)! It looks like there is no bug in
block-oriented algorythm of POST reading, but then why 4000?..
PS:
you think that it is HTTP-related bug? I don't think so: PHP3 works correctly...
------------------------------------------------------------------------
[2001-07-27 10:57:49] dk@dklab.ru
I have configured PHP4 to process POST data less than 8000000 (phpinfo() reports that, see below).
When I use the following script and enter a large block of text in the form, PHP4 cuts it off.
Please test
http://www.dklab.ru/test.php (with phpinfo() call, form
at the bottom of the file)
http://dklab.ru/content.txt (the file I am inserting -
please test it)
Here is the script:
<?
show_source("test.php");
echo @$text;
?>
<form action=test.php method=post>
<textarea cols=60 rows=10 name=text wrap=virtual>
<?$f=fopen("content.txt","r"); echo fread($f,100000)?>
</textarea><br>
<input type=submit name=go value="Go!">
</form>
I have encountered that use of multipart/form-data forms solves this problem, but usual POST forms
does not work correctly. PHP3 also work correct with such forms.
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12426&edit=1