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?
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:
Prova ad aggiungere il codice in wp-config.php:
define('FS_METHOD', 'direct');
FS_METHOD
sia l'abbreviazione di FILESYSTEM_METHOD
. Quando stai definendo di direct
modificare i file, ovvero senza utilizzare FTP, costringi WordPress a provare ad alterare direttamente i file sul sito.
Se stai usando Ubuntu.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
vedere qui: codex.wordpress.org/Hardening_WordPress o qui: stackoverflow.com/questions/18352682/...
"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
<?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)
whoami
modo da vedere le stesse informazioni:sudo chown -R `whoami` /path/to/your/local/www/folder
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.)
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!
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 apache
o 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.
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
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
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!
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 .
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.
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 aux
per 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.
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
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.