Joomla: risolvere l’errore “Maximum execution time of 30 seconds exceeded”
Installando estensioni per Joomla può capitare che si verifichi un errore, per la precisione indicato come
Fatal error: Maximum execution time of 30 seconds exceeded in /blabla/joomla/libraries/joomla/filesystem/archive/zip.php on line 320
Questo accade perchè Joomla impiega troppo tempo ad eseguire una operazione, probabilmente perchè il file zippato dell'estensione è troppo grande. I 30 secondi indicati nell'errore sono decisi nella configurazione di PHP.
Mi è capitato questo problema installando ArtForms, un componente che permette di creare e gestire form personalizzati.. il suo pacchetto di installazione include alcuni file audio usati per la gestione dei captcha e probabilmente la loro estrazione dall'archivio richiede troppo tempo.
Come risolverlo?
Se abbiamo accesso al file php.ini del server possiamo modificare le impostazioni di PHP ed aumentare il tempo concesso ad ogni script, anche solo temporaneamente.
In alternativa possiamo modificare il file joomla/libraries/joomla/filesystem/archive/zip.php, scrivendo alla linea 317 (al momento, ma potrebbe cambiare in futuro), appena prima della funzione unpack() il codice
set_time_limit(120);
come mostrato in figura:

Ora il limite viene innalzato a 120 secondi. Riprovare ad installare l'estensione e rimuovere il codice appena inserito per ripristinare tutto come in precedenza.
Se non funziona ancora, innalzare il limite e riprovare.
