[PHP] file upload: server vernaggelt bestanden

Pagina: 1
Acties:

Onderwerpen


  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
ik heb het volgende PHP-script:

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.


Verwijderd

Ik weet niet of het je probleem zal verhelpen, maar ik zou iig een MAX_FILE_SIZE meegeven:
PHP:
1
<input type="hidden" name="MAX_FILE_SIZE" value="1000">

  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
Die is op zich niet nodig: als die niet wordt opgegeven, wordt de MAX_FILE_SIZE uit php.ini genomen en die staat op 2M.

Hoe dan ook, na heel veel geprobeer en getest zijn we tot de conclusie gekomen dat het aan de serverconfiguratie van de provider ligt. Zelfs een gewone TEXTAREA-post van 30 regels (met 2.6 kB aan tekst) ging al compleet de mist in: vanaf regel 20 begonnen de tekst zich te herhalen. Op 5 andere servers, met 4 andere PHP-versies, was er niks aan de hand.

De site hebben we uiteindelijk maar overgezet naar een andere server. De hosting-provider "had morgen een vrije dag" en had weinig trek om erin te duiken (Service? What the **** is Service?). Desalniettemin vraag ik me af waar het aan zou hebben kunnen liggen.

Ik spoor veilig of ik spoor niet.