Come si aumenta la memoria PHP del proprio sito?
Il messaggio Allowed memory size of … bytes exhausted significa che un singolo processo PHP ha chiesto più memoria di quanta il limite ne consenta. Quel limite lo aumenti nel pannello di controllo del tuo hosting, sito per sito; con WordPress può aggiungersi una riga in wp-config.php. Prima però guarda quale file compare nel messaggio di errore. Se l'errore compare all'improvviso, dietro c'è di solito un plugin o un'importazione, e aumentare il limite nasconde soltanto il problema.
Che cosa dice il messaggio di errore
Per esteso: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes), seguito da un nome di file e da un numero di riga.
- Il primo numero è il limite attuale in byte. 134217728 byte sono 128 MB.
- Il secondo numero è ciò che PHP voleva ancora occupare in quel momento. Non dice nulla sul consumo totale.
- Il file e la riga mostrano dove la memoria è finita.
Su un sito online il visitatore vede di solito soltanto una pagina bianca, un codice di errore 500 oppure, con WordPress, l'avviso di un errore critico. Il messaggio vero si trova allora nel log degli errori. Su questi codici di stato trovi di più in che cosa significano i codici di errore 403, 404 e 500.
Quando si presenta
Con pagebuilder pesanti, grandi importazioni, e-commerce con molti prodotti e durante l'elaborazione di foto di grandi dimensioni. Di rado in un normale sito aziendale.
Dove si imposta il limite
- Nel pannello di controllo. In WWW4 imposti il limite di memoria PHP per ogni sito dal pannello di controllo, che apri dal portale clienti. Fin dove puoi arrivare dipende dal pacchetto. È la strada più affidabile.
- In wp-config.php, per WordPress. Sopra la riga che dice di smettere di modificare il file aggiungi questa riga: define('WP_MEMORY_LIMIT', '256M'); Di suo WordPress chiede solo 40 MB per la parte pubblica del sito, 64 MB in un multisito e 256 MB nell'area di amministrazione. Se il limite del server è già più alto, questa riga non cambia nulla. Se l'hosting non ammette un valore più alto, nemmeno.
- In un file .user.ini. Sugli hosting che lo permettono, metti nella cartella principale del sito un file .user.ini con la riga memory_limit = 256M. Per impostazione predefinita PHP rilegge quel file solo ogni cinque minuti. Il php.ini centrale del server, su un hosting condiviso, non puoi modificarlo tu.
Una riga con php_value nel file .htaccess funziona solo quando PHP gira come modulo di Apache. Altrimenti tutto il sito restituisce subito un errore 500.
Verificare che il nuovo valore sia attivo
In WordPress vai nell'area di amministrazione, sotto Strumenti, alla voce Salute del sito, nella scheda Info, alla sezione Server: lì trovi il limite di memoria PHP realmente in vigore.
Perché aumentare non è sempre la soluzione
Un sito che all'improvviso ha bisogno di molta più memoria ha di norma un problema invece di una carenza: un plugin che carica tutto insieme, un'importazione che non lavora a blocchi, una funzione che continua a richiamare sé stessa all'infinito. In quest'ultimo caso qualunque limite si esaurisce, per quanto alto tu lo imposti. Aumentare nasconde il problema.
Il limite inoltre vale per ogni processo PHP, e ogni visitatore che richiede una pagina nello stesso momento avvia un processo proprio.
Come trovare la causa
- Leggi il percorso nel messaggio di errore. Se c'è scritto wp-content/plugins seguito dal nome di una cartella, quello è il plugin in cui la memoria è finita. Di solito è anche il colpevole, ma non sempre: a volte è un altro plugin a riempire la memoria.
- Guarda il log degli errori nel pannello di controllo. In WordPress, inoltre, in wp-config.php imposta WP_DEBUG e WP_DEBUG_LOG su true e WP_DEBUG_DISPLAY su false. Gli errori finiscono allora in debug.log nella cartella wp-content. Finita la ricerca, disattivalo di nuovo.
- Verifica che cosa è cambiato. Un aggiornamento, un nuovo plugin, una grande importazione, un nuovo tema. D'ora in poi prova prima gli aggiornamenti; come si fa lo leggi in aggiornamenti di WordPress in sicurezza.
- Disattiva i plugin uno alla volta finché l'errore sparisce. Se non riesci più a entrare nell'area di amministrazione, rinomina via FTP o con il gestore dei file la cartella del plugin sospetto.
- Misura il consumo. Il plugin Query Monitor mostra per ogni pagina quanta memoria è stata usata.
- Riduci il lavoro. Importa in parti più piccole.
Il limite del tuo pacchetto
Il limite massimo di memoria fa parte del tuo pacchetto di hosting. Il pacchetto più piccolo è pensato per un sito aziendale o un blog; un e-commerce o un sito con un pagebuilder pesante richiede un pacchetto più grande. I pacchetti sono elencati nei prezzi dell'hosting. Se anche lì urti in modo strutturale contro il massimo, il passo successivo è un server tuo: leggi che cos'è un VPS e quando passarci.
Domande frequenti
Ho aumentato il limite ma l'errore resta. E adesso?
Guarda il primo numero nel messaggio di errore. Se non è cambiato, la tua impostazione non viene applicata: il file è nella cartella sbagliata oppure il tuo pacchetto non ammette un valore più alto. Se il numero è salito e la memoria finisce lo stesso, stai cercando una perdita e non una carenza.
Di quanta memoria PHP ha bisogno WordPress?
WordPress in sé ne richiede poca. A determinare il consumo sono i plugin e il tema; misura quindi il tuo sito invece di fidarti di una regola empirica.
Il limite di memoria è la stessa cosa della dimensione massima di upload?
No. Gli upload dipendono da upload_max_filesize e post_max_size. Un upload non riuscito non si risolve con più memoria.
Non ci riesci?
Mandaci tramite contatto il nome a dominio, il messaggio di errore completo e l'ora in cui è comparso. Guardiamo insieme a te nel log del server.
Se la situazione è diversa da quella descritta qui sopra o resti bloccato, contattaci tenendo a portata di mano il tuo nome a dominio o il numero cliente: ci daremo un'occhiata insieme.
Contatta l'assistenza