ik heb het volgende PHP-script:
Als ik een bestand upload, dan blijkt de filesize op de server bijna dubbel zo groot als de filesize van het originele bestand. Wanneer ik het geuploade bestand vergelijk met het origineel, dan komen de eerste ca 1000 bytes overeen, daarna komen delen van het bestand telkens dubbel voor. Beetje vaag, maar neem een bestand van 5 kB dat je in gedachten opdeelt in 5 stukken:
a
b
c
d
e
.. dan maakt de server daar een bestand van 9 kB van met de volgende "stukken":
a
b
b
c
c
d
d
e
e
een bestand van bv. 11,5 kB wordt hierdoor 21,5 kB groot. Het probleem doet zich voor bij zowel ascii als binary bestanden. De server geeft geen errors of wat dan ook:
Het probleem doet zich voor op een server die PHP 4.2.2 draait. Exact hetzelfde script geeft op andere servers met andere PHP-versies (4.0.6, 4.0.1, 4.1.2) geen problemen (een andere server met 4.2.2. heb ik niet tot mijn beschikking).
Waar kan dit aan liggen?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?PHP if ($HTTP_POST_VARS["frmUpload"]) { echo("<HR>" . $HTTP_POST_FILES["frmFullSize"]["size"] . "<HR>"); phpinfo(); exit; } else { ?> <FORM enctype="multipart/form-data" ACTION="_test.php" METHOD=post> <INPUT TYPE=hidden NAME=frmUpload VALUE=1> <INPUT TYPE=file NAME=frmFullSize> <INPUT TYPE=submit> </FORM> <?PHP } ?> |
Als ik een bestand upload, dan blijkt de filesize op de server bijna dubbel zo groot als de filesize van het originele bestand. Wanneer ik het geuploade bestand vergelijk met het origineel, dan komen de eerste ca 1000 bytes overeen, daarna komen delen van het bestand telkens dubbel voor. Beetje vaag, maar neem een bestand van 5 kB dat je in gedachten opdeelt in 5 stukken:
a
b
c
d
e
.. dan maakt de server daar een bestand van 9 kB van met de volgende "stukken":
a
b
b
c
c
d
d
e
e
een bestand van bv. 11,5 kB wordt hierdoor 21,5 kB groot. Het probleem doet zich voor bij zowel ascii als binary bestanden. De server geeft geen errors of wat dan ook:
code:
1
2
3
4
5
6
7
8
| _FILES["frmFullSize"] Array ( [name] => test.txt [type] => text/plain [tmp_name] => /tmp/phpcbEpUk [error] => 0 [size] => 21507 ) |
Het probleem doet zich voor op een server die PHP 4.2.2 draait. Exact hetzelfde script geeft op andere servers met andere PHP-versies (4.0.6, 4.0.1, 4.1.2) geen problemen (een andere server met 4.2.2. heb ik niet tot mijn beschikking).
Waar kan dit aan liggen?
Ik spoor veilig of ik spoor niet.