Database troppo grande da importare con phpMyAdmin
Vi sarà, prima o poi, capitato di imbattervi in questo messaggio a seguito di un tentativo di importare un database di grandi dimensioni, tramite phpMyAdmin.
"Stai probabilmente cercando di caricare sul server un file troppo grande. Fai riferimento alla documentazione se desideri aggirare questo limite."
Bene, qual'è il problema? Come si risolve?
Il server web su cui gira php e sul quale si trova il vostro sito ha dei parametri di funzionamento impostati tra i quali ce ne sono alcuni che possono determinare il corretto upload dei files.
Qui trovi una lista completa delle direttive del php. Le direttive PHP_INI_SYSTEM non possono essere modificate normalmente. Nel nostro caso specifico vediamo quali possono pregiudicare il caricamento di file .sql di alcune decine di megabyte.
Le direttive da prendere in considerazione sono:
upload_max_filesize = 2M
post_max_size = 8M
memory_limit = 128M
file_uploads = TRUE
max_execution_time = 30
I valori indicati sono quelli di default del php. Esaminiamole:
upload_max_filesize specifica la dimensione massima che un file che deve essere caricato non deve superare. Il valore da indicare deve essere un numero intero, ecco gli shorthand che si usano comunemente. Ad esempio M sta per megabyte.
post_max_size riguardo questa direttiva va subito sottolineato che per caricare grandi files, questo valore deve essere grande quanto upload_max_filesize. In genere, memory_limit dovrebbe essere grande quanto post_max_size.
file_uploads stabilisce se consentire o meno l'upload dei files via HTTP, richiede un valore booleano e può assumere gli stati TRUE o FALSE (case insensitive). Ovviamente è importante che sia TRUE.
max_execution_time imposta il tempo massimo, in secondi, nel quale uno script deve terminare la sua esecuzione prima che esso venga terminato dall'interprete php. Questo aiuta a evitare che script scritti male possano impegnare troppo il server.
E' bene precisare che da provider a provider le procedure per cambiare questi valori cambieranno molto probabilmente, ma quello che conta è che ci siano le condizioni per poterlo fare, magari caricando un proprio file php.ini o user.ini che vadano a dire al server come deve reimpostare questi valori.
Personalmente mi trovo bene con queste impostazioni:
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 128M
file_uploads = TRUE
max_execution_time = 300