PHP Bugs  
php.net | support | documentation | report a bug | advanced search | search howto | statistics | login

go to bug id or search bugs for  

Bug #19263 huge POST data corrupt
Submitted:6 Sep 2002 8:03am UTC Modified: 10 Sep 2002 1:49am UTC
From:erwin at isiz dot com Assigned to:
Status:Bogus Category:Apache2 related
Version:4CVS-2002-09-06 OS:Solaris 8
Votes:1 Avg. Score:5.0 ± 0.0 Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%) Same OS:0 (0.0%)
View/Vote Developer Edit Submission

[6 Sep 2002 8:03am UTC] erwin at isiz dot com
Hi,

I've gave this the summary "huge POST data", because I've found two
bugs, which are, in my opinion, related.

The first one: 
If I upload a file using the file upload example from the php website,
all I get are corrupted files. The resulting files are about two times
bigger then the input files. The amount of bytes on the output varies a
little bit. This does not happens with files of 10 Kb, but different
files which vary from 60-120 Kb got corrupted.

The second one:
If I post text in a textarea, nothing goes wrong. But if I post a lot of
text in a textarea, parts of the text is copied into the text itself.
For instance, I copied the source of http://www.php.net (normal HTML
source) in a textarea. Posted the data to info.php (this script only has
the phpinfo() function, so I can see all data). The sourcecode of the
php website is 376 lines long. The result is about 734 lines. This is
around twice as big (The site looks really weird ;-))

Again, I think these two are related. They only occured in conjunction
with Apache 2.0.40 (didn't test other Apache 2 releases). I'm sure that
the bug is a PHP bug, because Perl code doesn't have this problem (but I
rather use PHP)
I did test it with php-4.2.2, which gave me the same results.

PHP Configure line:
'./configure' '--with-mysql=/usr/local/mysql' '--enable-track-vars'
'--with-openssl=/usr/local/ssl/' '--with-zlib' '--enable-ftp'
'--with-gd' '--enable-gd-native-ttf' '--with-pdflib'
'--with-jpeg-dir=/usr/local' '--with-png-dir=/usr/local'
'--with-freetype-dir=/usr/local' '--prefix=/usr/local/httpd/php'
'--with-zlib-dir=/usr' '--with-apxs2=/usr/local/httpd/bin/apxs'

Greets,
Erwin
[10 Sep 2002 1:49am UTC] erwin at isiz dot com
I've found the problem:

don't add SetOutputFilter PHP and SetInputFilter PHP to the Apache
config. Only use AddType application/x-httpd-php .php

Grtz Erwin
[8 Jan 2003 2:21pm UTC] colreid at zasx dot com
People are asking me what I did, so here it is:
My Apache2 package has a directory which it uses for included files with
httpd.conf (the path to this directory in my installation is
/etc/httpd/conf.d).
In there is a file called php.conf, and basically I just commented out
the whole thing except for one line:

LoadModule php4_module modules/libphp4.so

This section here:
#<Files *.php>
#    SetOutputFilter PHP
#    SetInputFilter PHP
#    LimitRequestBody 524288
#</Files>
liked to munge uploads.

Also, in the httpd.conf file I added the line:
AddType application/x-httpd-php .php .html .htm .inc

And that's it.  I restarted apache and uploads decided to be nice.  :)
[1 Jul 2003 2:35am UTC] php at gijs dot triple-it dot nl
Hi,

On my configuration (RedHat 9.0, Apache 2.0.40, php-4.2.2), I had to
remove one of the following from the conf/httpd.conf or the
/conf.d/php.conf

AddType application/x-httpd-php .php4 .php3 .phtml .php

Or

<Files *.php*>
    SetOutputFilter PHP
    SetInputFilter PHP
    LimitRequestBody 10240000
</Files>

Either of these functions will work, but together they screw up and
create the problem as reported above.

Good Luck!

Gijs Zonneveld
[2 Oct 2003 9:07pm UTC] josantri at hotmail dot com
Same experience with RedHat 7.3, Apache 2.0.45 & PHP 4.3.1.
The solution was disabling MIME type for PHP (I don't see new problems
by now with this issue):

#AddType application/x-httpd-php .php

And now, leaving enabled filtering method, but be care with above
example or you get a 'Syntax error [...]:
AddInputFilter requires at least two arguments, input filter name (or ;
delimited names) followed by one or more file extensions' when Apache2
is restarted. The code we use is:

<Files *.php>
 AddInputFilter PHP .php
 AddOutputFilter PHP .php
</Files>

(Note the field naming the extension.)

I'm not sure how enable filtering for *php.*, because AddInputFilter and
AddOutputFilter seems not to accept wildcards on extensions (in files
section definition is fine). Probably, independent definitions for each
extension will work as well.

Thanks to all of the above for help provided.
[19 Nov 2003 8:38am UTC] grall at mit dot edu
You are right erwin about this bug.

The bug is in Apache 2.0.40
Possibly upgrading to a newer version will solve this.
In any case, using the 'AddType application/x-httpd-php .php' didn't
work for me, but instead I had to just insert
into my httpd.conf:

<Files *.php*>
    SetOutputFilter PHP
    SetInputFilter PHP
    LimitRequestBody 10240000
</Files>

Some people report that you have to choose between one or the other, but
in my case the second choice is the only one that works. Incidentally,
if you are using MulitViews (as I am), using the <Files> approach,
Multiviews no longer works. This is more of an Apache problem, but
whatever, this thread is about that problem. Any suggestions?
[21 Nov 2003 11:11am UTC] contact at creation-online dot net
Hi !!!

You really help me because I had the same problem with Apache 2 and Php
4.3.4

Now it works very good because of you solution ;-)

Best regards, Aurélien
[3 May 2004 12:46pm UTC] richardks666 at hotmail dot com
Hey

I am on Apache 2.0.40 using PHP5 RC2, experiencing the same problems as
you guys did. Going to try these solutions later on today, but I wanted
to tell  you that as seen, this problem exist in PHP5 RC2 as well.

If these are not the solutions to my problem, which I hope they are,
wrongly linked LIBJPEGs and other libraries might interfere. 

Last night I sniffed the data between the webserver and my dev.
computer, which showed that the instant I choose to upload my image
(depends on filetype of course), that the appropriate library is linked
and executed even there, and at the time, my PHP code hasn't been ran.
In my case the Header dump contained the libjpeg version 1 addon.

One might also wish to comment that, in conjunction with the original
post, I too receive very odd FORM data. The size is somewhat correct ( I
didn't doublecheck ) but extra objects are posted, for instance if I got
an array of id[], then it might contain awkward data. Solution for that
was to simply attach a INPUT TYPE HIDDEN nameing it "dummy" or something
with a dummy value, now the objects are passed correctly.

Staying in touch
[4 May 2004 2:56pm UTC] richardks666 at hotmail dot com
Solved!
I removed /etc/httpd/conf.d/php.conf
and updated /etc/httpd/conf/httpd.conf with:
AddType application/x-httpd-php .php .phtml .phtm .inc .oc
and restarted the webserver, things were back to normal. Was quite
frustrating!

RSS feed | show source 

PHP Copyright © 2001-2009 The PHP Group
All rights reserved.
Last updated: Sat Nov 21 10:30:49 2009 UTC