I log di errore di WordPress sono il modo più veloce per capire cosa rompe il sito (500, schermata bianca, checkout bloccato, backend lento). Qui trovi come attivare e leggere i log in modo sicuro, una procedura di diagnosi e le soluzioni rapide agli errori più frequenti.
TL;DR
In wp-config.php attiva solo per il tempo del debug:
|
1 2 3 4 |
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); // niente errori a schermo in produzione |
- Leggi
/wp-content/debug.loge i log PHP del server (cPanel/Plesk/SSH). - Per prima cosa isola: disattiva cache/minify, passa a tema di default, disattiva plugin a blocchi.
- Errori tipici: Memory exhausted, Max execution time, Headers already sent, Call to undefined function, DB connection.
- Finito il debug: togli WP_DEBUG o rimettilo a
falsee ruota/cancella il log.
Attivare e leggere i log (modalità sicura)
Modifica wp-config.php (sopra la riga “That’s all, stop editing!”):
|
1 2 3 4 5 |
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0); // ulteriore garanzia |
Dove leggere:
– wp-content/debug.log (log applicativo di WordPress)
– Log del server (PHP/Apache/Nginx) via cPanel/Plesk/SSH
Dove trovo i log del server
- cPanel: Metrics → Errors oppure File Manager → logs/error_log
- Plesk: dominio → Logs (filtra “Error”/“PHP”) o File Manager cartella logs
- SSH (può variare):
/var/log/apache2/error.logo/var/log/nginx/error.log
|
1 2 3 4 5 |
# SSH (lettura in tempo reale) tail -f wp-content/debug.log # Cerca solo errori fatali grep -i "fatal" wp-content/debug.log |
Procedura standard di diagnosi (sempre nell’ordine)
- Replica l’errore e annota data/ora.
- Disattiva cache/minify/concatenate temporaneamente (plugin di performance e CDN).
- Tema di default (Twenty Twenty-Five o simile) e disattiva i plugin a blocchi per trovare il colpevole.
- Controlla
debug.loge i log PHP del server in corrispondenza di data/ora. - Risolto il problema, riattiva progressivamente cache/ottimizzazioni e ritesta.
Errori frequenti e soluzioni rapide
| Messaggio nel log | Causa probabile | Soluzione rapida | ||
|---|---|---|---|---|
Allowed memory size exhausted |
Plugin/tema pesante, loop, memoria PHP bassa |
Rimuovi bloat, controlla plugin recenti e query pesanti. |
||
Maximum execution time of 30 seconds exceeded |
Processo lungo (import, API), limiti PHP bassi | Aumenta max_execution_time (hosting o .user.ini), spezza i job, verifica cron. |
||
Cannot modify header information - headers already sent |
Output prima dei header (spazi/BOM, echo in plugin/tema) |
Rimuovi BOM/spazi prima di <?php, evita ?> di chiusura, elimina echo in hook di login/redirect. |
||
Call to undefined function / class |
Dipendenza non caricata, ordine di hook errato, estensione PHP mancante | Controlla require/autoload, ordina gli hook (init vs plugins_loaded), abilita estensioni PHP (es. mbstring, intl). |
||
Error establishing a database connection |
Credenziali DB errate, MySQL down, privilegio utente | Verifica DB_NAME/USER/PASSWORD/HOST in wp-config.php, prova:
Chiedi all’hosting se il DB ha problemi o rate limit. |
||
cURL error 28: Connection timed out |
Timeout chiamate esterne (API, WP.org), DNS/firewall | Aumenta timeout della richiesta, verifica DNS/Firewall, controlla blocchi IPv6/IPv4 dell’hosting. | ||
Permission denied |
Permessi/ownership errati | Cartelle 755, file 644, wp-config.php 640. Riallinea ownership lato hosting. |
||
REST API not working / 401/403/404 |
Rewrite, sicurezza, cookie/sessione | Rigenera permalink, consenti endpoint nel WAF, escludi dal caching, controlla nonce. | ||
Mixed content |
Asset http su sito https | Forza https (URL sito), cerca/replace nel DB, controlla CDN e regole di riscrittura. |
Comandi utili (WP-CLI e server)
|
1 2 3 4 5 6 7 8 9 10 11 |
# WP-CLI: diagnostica rapida wp plugin deactivate --all wp theme activate twentytwentyfive wp cache flush wp rewrite flush --hard wp db check # Server: log live tail -f wp-content/debug.log tail -f /var/log/apache2/error.log # o log di Nginx |
Finito il debug: chiudi i rubinetti
In produzione rimetti così:
|
1 2 3 4 |
define('WP_DEBUG', false); define('WP_DEBUG_LOG', false); define('WP_DEBUG_DISPLAY', false); |
- Ruota o cancella
wp-content/debug.log(non lasciarlo crescere). - Se usi plugin di cache, svuota la cache e ritesta.
FAQ
Non vedo debug.log: perché?
Permessi/cartella non scrivibile, costanti in posizione errata, opcache che non ha ricaricato. Metti le costanti nella parte alta di wp-config.php e verifica i permessi di wp-content/.
Meglio mostrare gli errori a schermo?
No in produzione: usa WP_DEBUG_DISPLAY false. Gli errori a schermo possono esporre percorsi e dati sensibili agli utenti.
Log pieno di notice/warning: li ignoro?
I notice spesso non bloccano il sito ma indicano codice obsoleto. Pianifica la correzione: gli aggiornamenti futuri potrebbero trasformarli in errori.
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.



