WordPress chiede le mie credenziali FTP per installare i plugin


118

Ho installato un blog WordPress nel mio sistema locale. Ma quando provo ad aggiungere plug-in dall'amministratore, richiede l'accesso FTP. Cosa devo configurare affinché WordPress possa caricare senza FTP?

Risposte:


302

Prova ad aggiungere il codice in wp-config.php:

define('FS_METHOD', 'direct');

29
Continuo a imbattermi in questa risposta mentre cerco su Google, quindi inserisco una nota qui per me e per gli altri: Il codice è in wp-admin / includes / file.php: get_filesystem_method. Wordpress prova a creare un file "wp-content / temp-write-test -". Time (). Se fallisce, si presume che tu possa usare solo FTP. Ma questo potrebbe non essere vero, se wp-content stesso non è scrivibile, ma ad esempio wp-content / plugins lo è. Quindi, forzare FS_METHOD funziona.
Sebastian Schmid

3
funziona ma il problema ora è che dopo aver decompresso il pacchetto l'errore dice: "Impossibile creare la directory".
Andrew

3
Questo mi ha aiutato, ma solo perché ha esposto più informazioni sull'errore. Il problema principale è disporre delle autorizzazioni di scrittura per l'account utente che esegue l'aggiornamento. Per ogni tipo di sistema, questo può essere diverso. (nota che alcune risposte di seguito ti dicono di impostare i permessi di scrittura per demone, o httpd, o apache ...) Mi ha aiutato a vedere lo snippet PHP da un commento qui sotto (<? php echo (exec ("whoami")); ?>) in modo che io possa dire quale utente sta eseguendo l'aggiornamento. Apportare la modifica suggerita qui sembrava semplicemente sopprimere la sfida delle credenziali FTP in modo da poter vedere i messaggi di errore.
agentv

Sto usando nginx e non Apache. E 'abbastanza chiaro che PHP-FPM non usa la giusta combinazione utente / gruppo (usando il trucco descritto da @Aboozar Rajabi); tuttavia, per qualche motivo, il controllo WP fallisce (nessun errore sui log però). L'utilizzo di questa impostazione mi ha permesso di passare alla 4.7 senza problemi!
Gwyneth Llewelyn

1
Ho fatto devops in altre aree prima di WordPress, la mia ipotesi migliore è che FS_METHODsia l'abbreviazione di FILESYSTEM_METHOD. Quando stai definendo di directmodificare i file, ovvero senza utilizzare FTP, costringi WordPress a provare ad alterare direttamente i file sul sito.
Dylan Pierce

40

Se stai usando Ubuntu.

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER

7
-1 cattiva idea di fare questo, solo wp-content deve essere di proprietà di www-datavedere qui: codex.wordpress.org/Hardening_WordPress o qui: stackoverflow.com/questions/18352682/...
timhc22

Questa risposta corregge anche l'errore "Installazione non riuscita: impossibile individuare la directory dei contenuti di WordPress (wp-content)". quando si tenta di installare un plug-in dalla dashboard.
WindChimes

25

"Ogni volta che utilizzi il pannello di controllo di WordPress per installare, aggiornare o eliminare automaticamente i plugin, WordPress deve apportare modifiche ai file sul filesystem.

Prima di apportare qualsiasi modifica, WordPress verifica innanzitutto se ha o meno accesso per manipolare direttamente il file system.

Se WordPress non dispone delle autorizzazioni necessarie per modificare direttamente il filesystem, ti verranno chieste le credenziali FTP in modo che WordPress possa provare a fare ciò di cui ha bisogno tramite FTP. "

Soluzione: per scoprire con quale utente è in esecuzione la tua istanza di apache, crea uno script di test con il seguente contenuto:

<?php echo(exec("whoami")); ?>

Per me, era daemon e non www-data. Quindi, correggi l'autorizzazione:

sudo chown -R daemon /path/to/your/local/www/folder

3
Non dimenticare di disabilitare exec () o funzioni sensibili simili. in produzione.
Arda

2
Meglio ancora è usare <?php echo(exec("id")); ?>che fornirà anche dati di gruppo oltre l'id utente:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
Gwyneth Llewelyn

Se puoi sudo e chown puoi digitare in whoamimodo da vedere le stesse informazioni:sudo chown -R `whoami` /path/to/your/local/www/folder
Benji

11

Su OSX, ho usato quanto segue e ha funzionato:

sudo chown -R _www:_www {path to wordpress folder}

_www è l'utente con cui gira PHP sul Mac.

(Potrebbe anche essere necessario modificare alcune cartelle. L'avevo fatto prima e non è stato risolto. Non è stato fino a quando non ho eseguito il comando chown che ha funzionato, quindi non sono sicuro che fosse il comando chown da solo o una combinazione di chmod e chown.)


9

Ho cambiato la proprietà della cartella wordpress in www-data in modo ricorsivo e ho riavviato apache.

sudo chown -R www-data:www-data <folderpath>

Ha funzionato come un fascino!


Questa è probabilmente la risposta corretta per la maggior parte delle persone. Penso che questa sia la terza volta che creo una cartella e mi dimentico di chown.
MrMysterious2502

7

Dal primo colpo su Google :

WordPress richiede le tue credenziali FTP quando non può accedere direttamente ai file. Questo di solito è causato da PHP in esecuzione come utente apache (mod_php o CGI) piuttosto che dall'utente proprietario dei file WordPress.

Questo è abbastanza normale nella maggior parte degli ambienti di hosting condiviso: i file vengono archiviati come utente e Apache viene eseguito come utente apacheo httpd. Questa è in realtà una buona precauzione di sicurezza, quindi gli exploit e gli hack non possono modificare i file ospitati. Puoi aggirare questo problema impostando tutti i file WP sulla sicurezza 777, ma ciò significa nessuna sicurezza, quindi lo sconsiglio vivamente. Basta usare FTP, è la soluzione alternativa consigliata automaticamente con una buona ragione.


Grazie per la spiegazione. C'è un modo per configurare il server condiviso per eseguire PHP come utente corretto o correggere il proprietario o un'altra soluzione?
Maxwell sc

5

Se durante l'installazione di un plug-in, Wordpress richiede il nome host o i dettagli FTP. Quindi segui questi passaggi:

Accedi al tuo server e vai a / var / www / html / wordpress / . Apri wp-config.php e aggiungi questa riga dopo define ('DB_COLLATE')

define('FS_METHOD', 'direct');

Se ricevi l'errore "Impossibile creare la directory". Assegna i permessi di scrittura alla tua directory wordpress in modo ricorsivo

chmod -R go+w wordpress

NOTA. Per sicurezza, revoca queste autorizzazioni dopo aver installato un plug-in come

chmod -R go-w wordpress

4

Prima sposta nella cartella di installazione (ad esempio)

cd /Applications/XAMPP/xamppfiles/

Ora modificheremo la tua directory htdocs:

sudo chown -R daemon htdocs

Inserisci la tua password di root quando richiesto, quindi terminala con una chiamata chmod:

sudo chmod -R g+w htdocs

4

Ho eseguito un'installazione locale di WordPress su Ubuntu 14.04 seguendo i passaggi descritti qui e semplicemente in esecuzione:

sudo chown -R www-data:www-data {path_to_your_project_directory}

ha risolto il mio problema con il download dei plugin. L'unico motivo per cui lascio questo post qui è perché quando ho cercato su Google il mio problema, questo è stato uno dei primi risultati e mi ha portato alla soluzione del mio problema.

Spero che questo aiuti a chiunque!


3

Abbiamo avuto lo stesso problema come parte di un problema più grande. La soluzione suggerita di

define('FS_METHOD', 'direct');

nasconde quella finestra ma poi abbiamo ancora avuto problemi con il caricamento di temi e aggiornamenti ecc. È relativo ai permessi, tuttavia nel nostro caso abbiamo risolto il problema passando dal fornitore di php OS mod_php all'applicazione più sicura FastCGI del fornitore di sistemi operativi php .


2

Il modo più semplice per risolvere questo problema è aggiungere le seguenti informazioni FTP al tuo file wp-config.php

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');

FTP_BASE è il percorso completo della cartella "base" (ABSPATH) dell'installazione di WordPress FTP_CONTENT_DIR è il percorso completo della cartella wp-content dell'installazione di WordPress. FTP_PLUGIN_DIR è il percorso completo della cartella dei plugin dell'installazione di WordPress.


FTP non è sicuro e come tale lo disabilitiamo, quindi non è una soluzione. Usiamo invece SFTP.
Laurence Cope

1

Come accennato da Niels, ciò accade perché l'utente del processo server non può scrivere nella cartella di Wordpress.

Ma ecco la cosa che molti articoli non spiegano. È il proprietario del processo php, non il processo nginx. Se provi a cambiare il proprietario di nginx, questo non risolverà.

Per risolverlo, prova a correre ps auxper vedere quale utente possiede il processo php-fpm. Quindi controlla che l'utente sia lo stesso utente del proprietario della cartella wordpress o che possa almeno scrivere su di essa. Se l'utente non riesce a scriverci, dovrai modificare i permessi e / o la proprietà della cartella; oppure mettere i due utenti (proprietario del server e proprietario della cartella wordpress) in un gruppo comune che può scrivere nella cartella; o modificare la proprietà "utente" di php.ini in un utente che può scrivere nella cartella.


1

Ci sono molte risposte simili a questa domanda, ma nessuna tocca completamente la causa principale. Il commento di Sebastian Schmid sul post originale lo tocca ma non completamente. Ecco la mia opinione del 06/11/2018:

Causa ultima

Quando provi a caricare un plugin tramite l'interfaccia di amministrazione di WordPress, WordPress chiamerà una funzione chiamata "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ). Questa routine tenterà di scrivere un file nella posizione in questione (in questo caso la directory dei plugin). Ovviamente può fallire immediatamente qui se i permessi del file non sono impostati correttamente per consentire all'utente di WordPress (pensa all'identità dell'utente che esegue il php) di scrivere il file nella posizione in questione.

Se il file può essere creato, questa funzione rileva il proprietario del file temporaneo, insieme al proprietario del file corrente della funzione (rif: /wp-admin/includes/file.php:1572 ) e confronta i due. Se corrispondono, quindi, nelle parole di WordPress, "WordPress sta creando file con lo stesso proprietario dei file di WordPress, questo significa che è sicuro modificare e creare nuovi file tramite PHP" e il tuo plug-in viene caricato correttamente senza il prompt delle credenziali FTP. Se non corrispondono, viene visualizzato il prompt delle credenziali FTP.

correzioni

  1. Assicurati che la directory del plugin sia scrivibile dall'identità che esegue il tuo processo php.
  2. Assicurati che l'identità che esegue il tuo processo php sia il proprietario del file per:

    a) Tutti i file dell'applicazione WordPress, o ...
    b) Almeno il file /wp-admin/includes/file.php

Commenti finali

Non sono particolarmente entusiasta di applicare in modo specifico la proprietà del file a file.php per aggirare questo problema (sembra un po 'hacky a dir poco!). A questo punto mi sembra che il codice base di WordPress sia propenso a farci eseguire il processo PHP con lo stesso principal utente del proprietario del file per i file dell'applicazione WordPress. Gradirei alcuni commenti dalla comunità su questo.


1

Stavo affrontando lo stesso problema! Ho aggiunto il codice qui sotto nel file wp-config.php (in qualsiasi riga) e ora funziona!

define('FS_METHOD', 'direct');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.