Categorie
Featured Tutorial Tutorial WordPress

Come risolvere il problema della richiesta delle credenziali FTP da parte di WordPress

Come possiamo evitare che WordPress ci chieda ogni volta le credenziali FTP? Da cosa dipende il problema? Esiste una soluzione definitiva? Questo articolo contiene la risposta.

Like
Love
Ah Ah
Wow
Sad
Grrr

Abbiamo ottenuto uno spazio e un database per il nostro prossimo blog, abbiamo eseguito la famosa installazione in 5 minuti di WordPress e siamo pronti ad iniziare, o forse abbiano installato WordPress in locale per fare delle prove e vogliamo subito installare temi e plugin; ma c’è ancora qualcosa che non va: ogni volta che proviamo a installare un tema, un plugin, o aggiornare qualunque componente del nostro CMS preferito compare una fastidiosa finestra che ci chiede di inserire le credenziali FTP per permettere la scrittura dei file.

Qual è il problema?

Come possiamo evitare che WordPress ci chieda ogni volta le credenziali FTP? Da cosa dipende il problema? Esiste una soluzione definitiva? Questo articolo contiene la risposta.

Prima di tutto vediamo di capire come mai accade questa cosa.

WordPress è un CMS completo, alla portata di tutti, adatto a quasi tutte le configurazioni dei server più diffusi, e anche la fastidiosa richiesta delle credenziali FTP per l’installazione di temi e plugin non è un errore, è una caratteristica.

In che caso WordPress ci chiede di inserire le credenziali FTP invece di installare direttamente temi, aggiornamenti e plugin? Esiste una funzione all’interno del core di WordPress che ha il solo scopo di stabilire se il CMS è in grado di scrivere direttamente sul disco o se dovrà chiedervi le credenziali FTP per poter installare qualcosa.

Solo a scopo informativo vi dirò che la funzione di WordPress che stabilisce se possiamo installare direttamente un componente senza la necessità di inserire le credenziali FTP si chiama get_filesystem_method e si trova all’interno del file /wp-admin/includes/file.php, esattamente alla riga 966 (nella versione 4.7.3 di WordPress, che è la più recente al momento in cui scrivo).

In che modo questa funzione PHP può stabilire se è il caso di installare direttamente i componenti o se bisognerà mostrare un modulo con la richiesta delle credenziali FTP? Nella maniera più semplice possibile: facendo una prova.

La funzione get_filesystem_method prova a creare un file il cui nome sarà “temp-write-test-” . time() direttamente all’interno della cartella /wp-content/.

Ok, adesso ne sappiamo un po’ di più sulla faccenda, ma come risolviamo il problema? Ecco tre possibili soluzioni.

Soluzione 1: aggirare il controllo

La prima soluzione è indicata per quelle persone che hanno la certezza che le cartelle contenute all’interno di /wp-content/ siano correttamente configurate e abbiano i giusti permessi, in questo caso può essere utile evitare che WordPress esegua il controllo di scrittura se questo fallisce perché non è possibile scrivere direttamente dentro /wp-content/ ma solo all’interno delle sue sotto cartelle:

  • languages
  • plugins
  • themes
  • upgrade
  • uploads

Per evitare che WordPress esegua ogni volta il controllo e per eseguire direttamente l’installazione, in questi casi è sufficiente aggiungere una riga a /wp-config.php, la seguente:

define('FS_METHOD', 'direct');

Questa riga definisce una costante che si chiama FS_METHOD con un valore letterale “direct” e da questo momento in poi WordPress non chiederà mai più le credenziali FTP per scrivere sul filesystem.

Naturalmente questa soluzione sarà efficace solo se le sottocartelle di wp-content sono davvero configurate per l’accesso in scrittura, altrimenti provate la…

Soluzione 2: affrontare la realtà

Certe volte non è sufficiente che la cartella abbia pieni permessi di scrittura perché WordPress riesca a scriverci dentro senza chiederci le credenziali FTP, infatti capita di impostare i permessi a 777 senza risolvere nulla.

Come risolvere definitivamente il problema in modo corretto intervenendo sul filesystem? Dobbiamo assicurarci che la cartella in cui è installato WordPress, o anche solo la cartella /wp-content/appartengano allo stesso utente di PHP.

Cosa vuol dire che una cartella deve appartenere allo stesso utente di PHP? L’amministratore del server potrebbe aver configurato degli utenti diversi per le diverse operazioni, magari noi abbiamo trasferito tutto il core di WordPress utilizzando un servizio FTP che era associato a un utente diverso dal servizio che interpreta PHP, e capita che l’utente che fa girare PHP non riesca accedere alle cartelle dell’utente di FTP, ma se abbiamo accesso a un terminale e se conosciamo l’utente di PHP possiamo risolvere davvero in fretta:

sudo chown -R <utente>[:gruppo] <path di WordPress>

Il comando qui sopra va inserito all’interno di un terminale, dopo aver sostituito le varie parti con i valori corretti, e questi dipendono dal sistema operativo e dalla posizione dei vari file.

Per esempio su una installazione locale di WordPress con MacOSX e MAMP potremo scrivere così:

sudo chown -R _www:_www /Applications/MAMP/htdocs/WordPress/

In questo modo la cartella WordPress apparterrà allo stesso utente e allo stesso gruppo dell’interprete PHP e quindi non ci saranno più problemi con l’accesso degli script al filesystem.

Se il problema non può essere risolte nemmeno in questo modo, magari perché non abbiamo accesso al server come sudoer, ma vogliamo comunque che WordPress la smetta di chiederci le credenziali FTP ad ogni piè sospinto non ci rimane che la…

Soluzione 3: va bene FTP, ma le credenziali non le inserisco.

La terza soluzione rappresenta l’ultima spiaggia per chi ha questo problema: continueremo ad usare un accesso FTP per installare temi, plugin e aggiornamenti, ma faremo in modo che WordPress non ci chieda ogni volta le credenziali.

Come faremo a convincere WordPress a non chiederci più le credenziali FTP? Semplicemente salveremo le credenziali FTP in un posto in cui WordPress potrà reperirle autonomamente.

All’interno di wp-config.php inseriremo tre righe:

define('FTP_HOST', 'hostname');
define('FTP_USER', 'username');
define('FTP_PASS', 'password');

Naturalmente al posto di hostname, username e password inseriremo le vere credenziali FTP, in questo modo il nostro CMS sarà in grado di lavorare autonomamente utilizzando le nostre credenziali FTP.

Conclusioni

In questo articolo ho descritto tre possibili soluzioni al problema della richiesta delle credenziali FTP da parte di WordPress quando si prova ad installare qualcosa, fatemi sapere se vi è stato d’aiuto o se avete ancora questo problema, proverò a integrare altre soluzioni mano a mano che riceverò segnalazioni.

Se volete conoscere la soluzione ad altri problemi comuni con il CMS più usato al mondo non esitate a chiedere utilizzando i commenti qui sotto.

Like
Love
Ah Ah
Wow
Sad
Grrr

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *