Qualche giorno fa apro la pagina Plugin del blog e mi accorgo che manca un pezzo: la colonna che mi permette di scegliere, plugin per plugin, se abilitare l’auto-update oppure no. Non l’avevo tolta io, non ricordo aggiornamenti recenti di WordPress che l’abbiano spostata altrove, e su altri siti che gestisco è ancora lì tranquilla al suo posto. Quindi il sospetto è arrivato in fretta: qualcuno ha toccato qualcosa senza dirmelo, “al piano di sopra“.
La verifica
Prima cosa: escludere che fosse un cambiamento arrivato da un qualche comportamento mio, di uno dei plugin che utilizzo o un aggiornamento di WordPress (dato che ultimamente ne sono arrivati almeno un paio per mettere al sicuro WP 7). Ho controllato wp-config.php per le costanti dichiarate in documentazione:
define( 'WP_AUTO_UPDATE_CORE', 'false' );
Presente, ma quella riguarda solo gli aggiornamenti del core di WordPress, non i plugin, non è la causa. DISALLOW_FILE_MODS assente. Poi ho controllato via wp-cli se i dati di auto-update fossero comunque popolati nel database:
$ wp plugin list --status=active name status update version auto_update akismet active none 5.7 on wordfence active none 8.2.2 on ...
I dati c’erano, tutti popolati correttamente. Quindi non era un problema di database: la funzione esisteva ancora, semplicemente la UI per gestirla era sparita.
Il colpevole: un mu-plugin che non ho mai chiesto
A quel punto sono andato a guardare dentro wp-content/mu-plugins/. Cartella che, lo ricordo, WordPress carica sempre, senza possibilità di disattivazione dalla dashboard (da lì il nome: must-use). E lì, tra i miei file, ne spunta uno che non ho mai scritto io:
<?php /* Plugin Name: WordPress automation by Installatron Description: Management of this WordPress site is provided by Installatron. */ // Turn off WordPress automatic updates since these are managed externally. add_filter( 'automatic_updater_disabled', '__return_true', -9999 );
Installatron è il tool che molti hosting (incluso il mio, Serverplan) offrono per installare/gestire applicazioni web in un click. Non l’ho mai usato per questo blog, e sospetto che nemmeno tu lo utilizzi consapevolmente, se sei atterrato su questo articolo cercando la stessa colonna sparita. Eppure quel mu-plugin era lì, silenzioso, a filtrare automatic_updater_disabled forzandolo a true con priorità altissima (-9999, giusto per essere sicuri che nessun altro filtro potesse scavalcarlo). Risultato: WordPress disattiva tutto il sistema di auto-update: core, plugin, temi, e nasconde pure la UI corrispondente, colonna compresa.
Il commento nel file suggerisce un modo “ufficiale” per disattivarlo:
To block this plugin, create an empty file in the same directory named:
block-automation-by-installatron.php
Peccato che il codice del plugin non controlli mai l’esistenza di quel file. È una convenzione pensata per essere letta (e rispettata) dall’automazione di Installatron stessa quando rigenera i suoi file, non da WordPress. Creare quel file vuoto, quindi, non serve a niente: il filtro resta attivo lo stesso.
La soluzione
L’unico modo efficace è intervenire direttamente sul file. Io ho scelto la via più pulita e reversibile: rinominarlo togliendogli l’estensione .php, così la cartella mu-plugins smette di caricarlo ma il file resta lì, intatto, nel caso servisse tornare indietro:
mv wp-content/mu-plugins/automation-by-installatron.php \ wp-content/mu-plugins/automation-by-installatron.php.disabled
Verifica rapida via wp-cli per confermare che il filtro non sia più attivo:
$ wp eval 'var_dump(apply_filters("automatic_updater_disabled", false));'
bool(false)
Colonna auto-update tornata al suo posto nella pagina Plugin, tutto come previsto.
In conclusione
Se anche a te manca quella colonna e non ricordi di averla tolta, il primo posto dove guardare è wp-content/mu-plugins/, non la lista plugin normale, perché i must-use plugin non compaiono lì e non sono disattivabili dalla dashboard. Se trovi un file simile a automation-by-installatron.php (o comunque riconducibile al tuo hosting), sai già cosa cercare al suo interno e come toglierlo di mezzo.
Il punto che mi lascia più perplesso resta un altro: nessun avviso, nessuna nota nel pannello Serverplan, niente. Un mu-plugin che disattiva silenziosamente una funzione di sicurezza/manutenzione del sito è il genere di cosa che vorrei sapere prima, non scoprire per caso mesi dopo controllando una colonna mancante. Se gestisci un sito su hosting che offre Installatron (o strumenti simili), vale la pena dare un’occhiata preventiva a quella cartella, anche se non hai scelto consapevolmente di attivarlo.
L’area commenti è a tua disposizione in caso di ulteriori dubbi o magari per segnalare la medesima situazione su hosting differenti rispetto a quello da me utilizzato.
#KeepItSimple