Grote bestanden uploaden

Afdrukken PDF
Geschreven door op vrijdag 11 april 2008 03:07, in: Server en FTP

De meeste webservers zullen het uploaden van grote bestanden (>2MB) standaard niet toelaten. Hier vindt u uitleg over hoe u eventueel uw PHP instellingen kunt configureren om grote bestanden te kunnen uploaden.

De theorie

php.ini

De php.ini file bevat alle configuratie instellingen voor de server. Soms (meestal niet) is het mogelijk om deze instellingen te overschrijven middels een .htaccess bestand.

We concentreren ons eerst even op de php.ini. Dit bestand bevat onder andere de volgende instellingen die we nodig hebben om aan te passen:

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • memory_limit
  • max_execution_time
  • post_max_size

De eerste optie zorgt ervoor¬†dat bestanden ge√ľpload kunnen worden (on/off switch). De overige instellingen staan hieronder.

upload_max_filesize en post_max_size

 

Bestanden worden gewoonlijk gepost door de webserver in een format bekend als 'multipart/form-data'. De bovenlimiet van de data die het script kan accepteren wordt bepaald door de `post_max_size`. Ideaal gezien zou deze waarde groter moeten zijn dan de waarde die u instelt voor `upload_max_filesize`.

Het is van belang te realiseren dat `upload_max_filesize` de som is van alle bestanden die u in 1 keer upload. `post_max_size` is de upload_max_filesize + de som van de lengte van alle andere velden in het formulier + mime headers die de encoder eventueel bevat. Aangezien deze velden over het algemeen erg klein zijn kunt u de `upload max size` de `post max size` laten benaderen.

Volgens de PHP documentatie kunt u een MAX_UPLOAD_LIMIT in de HTML instellen om een limiet voor de browser in te stellen. Onze ervaring is echter dat browsers deze instellingen compleet negeren...

memory_limit

 

Wanneer de PHP engine een binnenkomende POST gaat behandelen moet het een deel van de binnenkomende data in het geheugen bewaren. Deze instellingen hebben alleen effect als u gebruik maakt van de --enable-memory-limit optie in de configuratie. De memory limiet te hoog instellen kan erg gevaarlijk zijn omdat al het beschikbare geheugen gebruikt zal worden voor uploads waarvan er wellicht meerdere tegelijk plaatsvinden. Andere afzonderlijke scripts die veel geheugen gebruiken kunnen hierdoor aangetast worden waardoor de hele server instabiel kan worden.

max_execution_time en max_input_time

Deze instellingen defini√ęren de maximale tijd van het script en de tijd dat een script en de input tijd die een script kan accepteren. Als vele MB's geupload gaan worden moet de max_input_time redelijk hoog staan.¬†U kunt de instellingen in de ini file voor de max_input_time overschrijven door de set_time_limit() functie op te roepen in¬†uw scripts.

Apache Instellingen
De apache webserver heeft een LimitRequestBody configuratie directive die de omvang van alle POST data beperkt, ongeacht de scriptingtaal die gebruikt wordt. Sommige RPM installaties zetten de limit request body op 512 Kb. Dit moet aangepast worden naar een grotere waarden of helemaal verwijderd worden.

Bovenstaande info is met toestemming overgenomen en vertaald van MamboDOCMan

De praktijk

Aanpassen/Aanmaken php.ini:

 

Pas de volgende waarden aan in uw php.ini. Heeft u sharedhosting dan hebt u meestal niet de mogelijk om het bestand php.ini aan te passen. Bij sommige webhosters kunt u een php.ini aanmaken (gewoon een tekstbestand dat u php.ini noemt) en daarin plakt u de volgende regels:

register_globals = On register_argc_argv = On memory_limit = 10M track_errors = On upload_max_filesize = 10M

Vraag aan uw hosting provider waar u dit bestandje kunt plaatsen.

Aanpassen .htaccess:

 

Het bestand .htaccess kunt¬†u vinden in de map waarin Joomla! ge√Įnstalleerd is.

Het is mogelijk dat het daar nog staat als htaccess.txt, in dat geval dient u het te hernoemen naar .htaccess.

Open de .htaccess en voeg dit aan het begin toe:

upload_max_filesize 20M php_value post_max_size 20M

Tegenwoordig zullen de meeste webhosters NIET toe laten dat door middel van een .htaccess bestand de server settings veranderd kunnen worden. Indien u aanpassingen nodig heeft en het lukt niet met de hier boven genoemde optie dan kunt u het beste even contact opnemen met uw webhoster.