IMC!


Contenuti


Foto

 







Curiosando...
Novita  Novità Link  Link Blog  Blog English  Español 

Upload di file di grandi dimensioni


Questa non � una guida completa, ma solo una raccolta di alcuni suggerimenti su come effettuare l'upload di file di grandi dimensioni con PHP.

In php.in, bisogna controllare le seguenti direttive:

upload_max_filesize --> Massima dimensione caricabile.
file_uploads --> Attiva o meno l'upload di file.
upload_tmp_dir --> Directory temporanea per gli upload.
max_input_time --> Tempo massimo per ricevere dati: POST, GET, Upload.
max_execution_time --> Tempo massimo di esecuzione di uno script.
post_max_size --> Dimensione massima della variabile POST.
memory_limit --> Limite di memoria massimo. Non dovrebbe riguardare l'upload di file, ma � da tenere in considerazione nel caso di errori.

In httpd.conf di Apache bisogna configurare le seguenti direttive:

LimitRequestBody --> Di default, questa direttiva � disattivata. Se fosse attivata, limiterebbe la dimensione di POST. Da controllare in caso di errori.

Cambio momentaneo delle direttive
A questo punto si pone un problema. Da un lato, per motivi di sicurezza e di stabilit�, vorremmo limitare le risorse e i tempi di PHP. Pensiamo ad esempio a una variabile POST di 100 Mb di dimensione: un hacker potrebbe tranquillamente intasarci la banda. O pensiamo a uno scrip con un bug che impegna al 100% la CPU: se PHP lasciasse allo script tempi di esecuzione infiniti, il server si bloccherebbe.
Dall'altra parte vorremmo estendere tali limiti per consentire l'upload di file grandi. La soluzione � modificare al volo le direttive di PHP, con dei comandi ad hoc.

Soluzione: .htaccess
Nel file .htaccess (che inseririamo in ogni cartella per aggiungere direttive per Apache) possiamo specificare anche delle direttive per PHP. Ecco il codice:

php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

Ovviamente dobbiamo accertarci che la direttiva AllowOverride per la nostra cartella sia impostata su all nel file httpd.conf di configurazione di Apache, altrimenti le direttive di .htaccess saranno ignorate.







Fatal error: Call to undefined function sqlite_open() in /membri/giacobbe85/include/commenti.inc.php on line 324