Upload einer Datei größer als 2 GB mit PHP

9

Ich versuche eine Datei größer als 2 GB auf einen lokalen PHP 5.3.4 Server hochzuladen. Ich habe die folgenden Servervariablen festgelegt:

%Vor%

In der Fehlerliste habe ich jedoch gefunden:

  

PHP Warnung: POST Content-Length von 2120909412 Bytes überschreitet die Grenze von 1073741824 Bytes in Unbekannt in Zeile 0

Kann mir jemand sagen, warum das immer wieder scheitert?

    
Reado 06.01.2011, 10:55
quelle

6 Antworten

2

Vielleicht kann dies von Apache-Beschränkungen für die POST-Größe herrühren:

Ссылка

Es scheint, dass diese Beschränkung auf 2 GB möglicherweise auf 64-Bit-Installationen größer sein kann. Und ich bin nicht sicher, 0 in diesem directiveove zu setzen, erreicht das Kompilierungslimit nicht. Siehe Beispiele für diesen Thread:

Ссылка

Dann vergiss nicht, auch die max_input_time in PHP zu ändern.

Aber Sie erreichen hohe Grenzen :-) Vielleicht könnten Sie versuchen, einen Rich-Client (flash? js?) auf der Seite des Browsers, die Übertragung in Chunks oder eine Art FTP-Dinge, mit Fortschrittsanzeigen für den Benutzer / p>     

regilero 06.01.2011, 13:15
quelle
3

Ich weiß nicht in 5.3.x, aber in 5.2.x gibt es einige int / long Probleme im PHP-Code. Selbst wenn Sie auf einem 64-Bit-System arbeiten und eine mit 64-Bit kompilierte Version von PHP haben, gibt es mehrere Probleme.

Zuerst speichert der Code, der post_max_size und andere von ascii in Ganzzahl konvertiert, den Wert in einem int, so dass er "9G" konvertiert und das Ergebnis in dieses int setzt, weil 9G eine größere Zahl als ein 32- ist. Bit-Variable kann halten.

Aber es gibt auch einige andere Bereiche von PHP-Code, die mit dem Apache-Modul, CGI, usw. verwendet werden, die von int zu long geändert werden müssen.

Damit dies funktioniert, müssen Sie den PHP-Code bearbeiten und manuell kompilieren (stellen Sie sicher, dass Sie ihn als 64-Bit kompilieren). Hier ist ein Link zu einer Liste von Diffs:

Ссылка

Von diesem PHP-Bug-Beitrag referenziert: Ссылка

Die obige Datei ist ein Unterschied zu 5.2.10 Code, aber ich habe die Änderungen manuell in 5.2.17 Code geändert und ich habe gerade eine 3.4gb einzelne Datei über Apache / PHP hochgeladen (was vorher nicht funktioniert hat) ).

ope, das hilft.

    
phliKtid 10.02.2011 00:31
quelle
3

Ich hatte ein ähnliches Problem, aber meine Konfiguration war:

%Vor%

und trotzdem konnte ich keine 1.2GB Datei hochladen. Der Fehler war der gleiche:

%Vor%

Ich habe mich einen Tag lang gefragt, wo zum Teufel diese "Grenze von 1073741824" herkommt!

Lösung :

Tatsächlich war der Fehler im php.ini Parser: Er versteht nur INTEGER Zahlen, also analysierte er im Wesentlichen 1.8G als 1G !!

Ändern des Wertes auf z.B. 1800M hat es behoben.

Stellen Sie sicher, dass der Apache-Server mit dem folgenden Befehl service apache2 restart

neu gestartet wird     
Mobiler 28.07.2012 12:30
quelle
1

Wie PhliKtid bereits erwähnt hat, ist dies eine Einschränkung des PHP-Frameworks. Zum Bearbeiten des Quellcodes, wie im Fehlerbericht phliKtid verlinkt, gibt es eine Problemumgehung, die das Setzen von Einstellungen beinhaltet die upload_max_filesize auf 0 in der Datei php.ini.

%Vor%

Dadurch wird PHP beim Versuch, "5G" in eine 32-Bit-Ganzzahl zu konvertieren, nicht abstürzen, und Sie werden in der Lage sein, Dateien so groß wie möglich mit der Variablen "post_max_size" hochzuladen.

    
Fueled 23.01.2013 19:45
quelle
1

Ich finde heraus, wie man mit http und php eine 10G-Datei hochladen kann.

php.ini:

%Vor%

Es funktioniert in PHP 5.3.10.

Wenn Sie diese Datei nicht alle in den Speicher laden, ist memory_limit nicht verwandt.

    
bronze man 04.09.2013 02:42
quelle
0

Wir hatten das gleiche Problem: Uploads wurden bei 2 GB gestoppt.

Unter SLES (SUSE Linux Enterprise Server) 11 SP 2 war php53 das Problem.

Dann haben wir ein neues Repository mit php54 hinzugefügt: Ссылка

und aktualisiert, können wir jetzt 5GB hochladen: -)

    
Michael Monnerie 22.07.2013 09:31
quelle

Tags und Links