Drupal 7 consente di gestire in modo molto preciso e puntuale la gestione dei permessi così come la presentazione all’utente di file allegati ai vari nodi. Quello che manca è la possibilità di incrementare direttamente dall’interfaccia la dimensione consentita dei file allegati.
Drupal infatti, come altri CMS in PHP, sottostà ai limiti imposti dalla configurazione dell’istanza di PHP presente sul server, in particolare ai valori delle variabili, upload_max_filesize, post_max_size, e memory_limit.
Il primo parametro, come è facile intuire regola la dimensione massima dei contenuti che è possibile uploadare via PHP, mentre il secondo invece regola la dimensione del buffer dati che può essere passato via POST. Il terzo parametro è n po’ più complesso da definire in quanto regola la quantità di memoria che può essere utilizzata da uno script PHP durante la sua esecuzione. Chiaramente anche l’upload di un contenuto viene gestito da uno script che tipicamente alloca temporaneamente in memoria il file di cui si sta facendo l’upload. Per questo anche i limiti di memoria vanno configurati per assicurare a Drupal la possibilità di gestire l’upload di file di grandi dimensioni.
Relazioni fra i parametri
Visto il ruolo che i parametri hanno nel definire il comportamento di un server e la sua modalità nell’eseguire i nostri script PHP vediamo quali devono essere le relazioni fra di essi, ed infine un esempio pratico di configurazione.
Indubbiamente il parametro post_max_size dovrà avere un valore maggiore del parametro upload_max_filesize. Quanto maggiore dipende dal tipo di meccanismi usati per l’upload, personalmente utilizzo la relazione:
post_max_size > upload_max_filesize * 2
garantendo un limite doppio per i dati in POST. Quanto al memory_limit di solito controllo solo di disporre di un valore maggiore di quello utilizzato per post_max_size.
Questo porta alla seconda relazione:
post_max_size < memory_limit
Se ad esempio volessimo innalzare il limite di upload a 50 Mb dovremmo utilizzare il seguente blocco di configurazione:
upload_max_filesize = 50M post_max_size = 100M memory_limit = 128M
Come modificare le impostazioni del server
Se si sta operando su un server dedicato, e si posseggono i diritti di scrittura sul file php.ini, l’operazione è molto semplice perchè dovremmo solo curare di inserire il blocco sopra nel corpo del file. La posizione del file è dipendente dal vostro OS, su Linux CentOs o RedHat lo si trova in /etc/php.ini.
Se la vostra istanza di Drupal 7 è ospitata su un server condiviso è probabile che non vi lascino modificare il file php.ini perchè questo comporterebbe modifiche al comportamento di tutti gli altri siti presenti sullo stesso server. Nonostante questo la configurazione è comunque possibile agendo tramite un file .htaccess ovvero un file nascosto, da posizionare nella root folder dell’installazione di Drupal, e destinato a fornire direttive ad Apache. Apache interpreta il file .htaccess con un criterio di sovrascrittura rispetto alle altre configurazioni generali, permettendo quindi di fare overwrite dei parametri originali contenuti nel php.ini.
In questo caso il contenuto del file dovrà essere il seguente:
php_value upload_max_filesize 50M php_value post_max_size 100M php_value memory_limit 128M
Ancora una volta va ricordato che il file deve stare nella root folder di Drupal, e che Apache deve avere i permessi di lettura su di esso.
A quanto so anche le ultime versioni di IIS supportano gli .htaccess, per cui questo approccio è abbastanza universale (oltre che semplice).