Come posso impedire a WordPress di richiedere le informazioni FTP durante gli aggiornamenti?
Come posso impedire a WordPress di richiedere le informazioni FTP durante gli aggiornamenti?

Se modifichi il tuo file wp-config.php
puoi precaricare queste impostazioni FTP come costanti lette da WordPress. Tieni presente che, su un host condiviso, dovresti essere consapevole delle possibili implicazioni per la sicurezza.
Vedi Modifica di wp-config.php
per maggiori informazioni.
Le tue impostazioni potrebbero variare, ma queste funzionano per me e la mia configurazione di hosting. Ho incluso alcune costanti non utilizzate, con prefisso:
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/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_HOST', 'ftp.my-site.example.com');
// define('FTP_SSL', false);

Controlla la proprietà dei file. Quando l'utente con cui viene eseguito Apache ha i permessi di scrittura sulle directory di WordPress, il processo di aggiornamento integrato funziona senza bisogno di FTP. Le credenziali FTP vengono richieste solo se il server web non ha i privilegi necessari sui tuoi file - in questo caso WordPress ti chiederà i dettagli FTP e tenterà di usarli per riconnettersi via FTP allo stesso server su cui è installato, così da poter scrivere i file necessari.

Sembra che WordPress non solo verifichi se le directory sono scrivibili, ma controlli anche se l'utente Apache POSSIEDA le directory (o almeno, se l'utente Apache possiede il file temporaneo che crea). Osserva queste righe di codice in /wp-admin/includes/file.php: get_filesystem_method():
if ( $temp_handle ) {
if ( getmyuid() == @fileowner($temp_file_name) )
$method = 'direct';
@fclose($temp_handle);
@unlink($temp_file_name);
}
Quindi, una soluzione rapida consiste nell'emettere questo comando e concedere la proprietà dell'intera installazione di WordPress ad Apache:
sudo chown -R www-data wordpress/
Dove www-data è l'utente Apache, e ovviamente wordpress è la tua cartella di installazione di WordPress.
Ho documentato ulteriormente la mia soluzione qui: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

Quel link non è più attivo. Ecco un archivio: http://web.archive.org/web/20131213005955/http://rubiks.ph/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

Qualcuno può spiegare i dettagli di: "$allow_relaxed_file_ownership Opzionale. Indica se consentire la scrittura da parte di Gruppo/Mondo."

Durante l'ottimizzazione di Apache 2.4 tramite EasyApache4 per migliorare la velocità di caricamento del sito su un server Centos 7 con PHP 7, ho abilitato mod_pagespeed. Quando lo si abilita, questo modulo disabilita automaticamente mod_ruid2 e mod_cgi (e abilita altri due moduli). Quando si disabilita mod_pagespeed, però, mod_ruid2 non viene riabilitato automaticamente - viene riabilitato solo mod_cgi. Senza mod_ruid2, WordPress richiederà le credenziali FTP.
Non è necessario modificare manualmente wp-config.php o impostare pericolosamente i permessi dei file a 777. Basta abilitare manualmente mod_ruid2, riavviare Apache e il problema delle credenziali FTP/dei permessi dei file sarà risolto. WordPress e i plugin potranno essere aggiornati come al solito e sarà possibile caricare media nella galleria di WordPress. Funziona immediatamente.
Ho verificato che quando si passa da MPM Prefork a Worker, mod_ruid2 viene disabilitato. Quando si ritorna da Worker a Prefork, mod_ruid2 non viene riabilitato, causando il problema descritto in questo post.
In entrambi i casi, la soluzione è controllare e abilitare mod_ruid2.
Spero di essere stato utile.

1) Non sono d'accordo con la risposta sopra perché è troppo generica
1a) Semplicemente non voglio cambiare la proprietà di tutti i miei file in modo ricorsivo (come usare un fucile per uccidere una zanzara). Soprattutto perché prima funzionava perfettamente.
1b) Wordpress ha questa "subdola" caratteristica di chiederti all'improvviso le credenziali FTP
2) Quindi ho iniziato a scavare più a fondo seguendo l'indizio di Ardee Aram. Ho controllato nel file file.php e verificato la sua proprietà. Sembra che file.php dipenda dalla sua stessa proprietà (che era impostata erroneamente come root).
Soluzione: chown www file.php
NOTA: Sostituisci www con qualsiasi sia la configurazione della tua distribuzione (puoi usare ps aux | egrep "php|http" e vedere qual è la proprietà nella prima colonna).
Spero che questo aiuti qualcun altro a non frustrarsi con questo problema. Non capisco nemmeno perché Wordpress non "si lamenti" subito e poi proponga di usare l'alternativa FTP. Ora è come una "funzionalità" che viene introdotta all'improvviso.

Benvenuto su WPSE, th3penguinwhisperer. Sentiti libero di fare il tour. Riguardo "la risposta sopra", le risposte possono cambiare ordine in qualsiasi momento a causa dei voti degli utenti. Sarebbe fantastico se potessi modificare il tuo post per specificare a quale risposta ti riferisci, in modo che sia chiaro. Grazie per aver condiviso i tuoi pensieri!
