2010-05-21 7 views
7

Ich habe Probleme mit einem Datei-Upload-Dienstprogramm in meiner PHP-Anwendung. Wenn ich große Dateien (9MB +) über das Formular sende, bekomme ich ein sehr merkwürdiges Verhalten: Die POST-Daten, die ich in das Formular eingefügt habe, verschwinden, einschließlich der Dateiinformationen.POST-Daten werden beim Hochladen großer Dateien nicht angezeigt

Ich habe bereits alle PHP-Limits erhöht (Zeitlimit, maximale Eingabezeit, maximale Größe, Speicherlimit und maximale Dateigröße) und kann immer noch nicht das richtige Verhalten erzielen. Ich habe versucht, die regulären HTTP-Formulare durch eine Flash-basierte Lösung (SWFUpload, www.swfupload.org) zu ersetzen, immer noch das gleiche Verhalten.

Ich habe mehrere Dateien mit ähnlichen Größen versucht und es ist definitiv kein bestimmtes Dateiproblem. Ich habe die POST-Vars, die mit Firebug gesendet wurden, debuggt, und die richtigen Variablen sind noch in der Kopfzeile zusammen mit der Datei vorhanden.

Was könnte hier vor sich gehen?

+1

Wie wäre es in den Server-Logs suchen. Versuchen Sie, Fehler/Warnungen zu finden. – nc3b

+0

Ich tat, sagt überhaupt nichts. – DfKimera

+0

Ich habe das gleiche Problem. Hast du dein Problem gelöst? –

Antwort

2

Webserver können auch so konfiguriert werden, dass Anfragengrößen begrenzt werden. Wenn Sie Apache verwenden, sehen Sie sich die Richtlinie LimitRequestBody an.

+0

Ich schaute auf die Apache-Konfiguration, die LimitRequestBody-Direktive ist nicht da, also nehme ich an, dass es auf dem Standardwert (0, oder keine Begrenzung) – DfKimera

+0

Es stellte sich heraus, dass das das Problem war. Außer dem WHM/cPanel-Setup, das ich zu der Zeit hatte, war es wirklich schwierig, die LimitRequestBody-Direktive wirklich zu ändern. Das Erhöhen dieser + post_max_size, das Hochladen der maximalen Größe und des Speicherlimits sollten das Problem lösen. – DfKimera

+0

Ich habe versucht, post_max_size, upload_max_size und Speicherlimit zu ändern, aber immer noch mit dem gleichen Problem konfrontiert. –

1

versuchen Sie, kleine Dateien von 1 - 2 MB hochladen, wenn Sie noch nicht in der Lage, den Code zu buchen.

Ich hoffe, Sie haben enctype = '/ multipart/form-data' in Formulardefinition hinzugefügt.

+0

Ich habe, und kleine Dateien funktionieren. Das Problem tritt bei 8 MB + Dateien auf. Art ist da. – DfKimera

0

Auf welchem ​​Server laufen Sie? Ich denke, einige Server OS haben ein Limit festgelegt, wie große Dateien sie zulassen. Dieser Wert kann geändert werden.

1

Ok, ich denke, ich habe die Lösung. Sie müssen sowohl post_max_size Direktive als auch $_SERVER['CONTENT_LENGTH'] überprüfen. Wenn also $ _SERVER ['CONTENT_LENGTH'] post_max_size übertrifft, bedeutet das, dass sie versuchen, zu viele Daten hochzuladen.

$POST_MAX_SIZE = ini_get('post_max_size'); 
$mul = substr($POST_MAX_SIZE, -1); 
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1))); 
if($_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) 
{ 
    $error = true; 
} 

Lösung von hier genommen: http://www.php.net/manual/en/features.file-upload.php#73762

Verwandte Themen