Antworten:
Wenn Sie Ihre wp-config.php
Datei bearbeiten, können Sie diese FTP-Einstellungen als von WordPress gelesene Konstanten vorab laden. Denken Sie daran, dass Sie auf einem gemeinsam genutzten Host mögliche Auswirkungen auf die Sicherheit berücksichtigen sollten.
Weitere Informationen finden Sie unter Bearbeitenwp-config.php
.
Ihre Einstellungen variieren, aber diese funktionieren für mich und mein Hosting-Setup. Ich habe einige der unbenutzten Konstanten eingefügt, vorangestellt:
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);
Überprüfen Sie Ihren Dateibesitz. Wenn der Benutzer, unter dem Apache ausgeführt wird, in die WordPress-Verzeichnisse schreiben kann, funktioniert der integrierte Upgrade-Prozess nur ohne FTP. Die FTP-Anmeldeinformationen gelten für den Fall, dass der Webserver nicht über die richtigen Berechtigungen für Ihre Dateien verfügt. WordPress fordert Sie dann zur Eingabe Ihrer FTP-Daten auf und versucht, diese zu verwenden, um einen FTP-Zugriff auf denselben Server zu ermöglichen, auf dem es die Datei schreiben kann Dateien, die es braucht.
Es scheint , dass nicht nur Wordpress zu überprüfen , ob die Verzeichnisse beschreibbar sind, aber es prüft , ob der Apache Benutzer OWNS die Verzeichnisse (oder zumindest, wenn der Apache Benutzer die temporäre Datei besitzt schafft es). Beachten Sie die folgenden Codezeilen unter /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);
}
Daher besteht eine schnelle Lösung darin, diesen Befehl abzusetzen und Apache den Besitz der gesamten Wordpress-Installation zu übertragen:
sudo chown -R www-data wordpress/
Wobei www-data der Apache-Benutzer ist und wordpress natürlich Ihr WordPress-Installationsordner.
Ich habe meine Lösung hier weiter dokumentiert: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrade/
Bei der Feinabstimmung von Apache 2.4 über EasyApache4 zur Verbesserung der Ladegeschwindigkeit von Websites auf einem Centos 7 PHP 7-Server hatte ich mod_pagespeed aktiviert. Bei Aktivierung werden mod_ruid2 und mod_cgi automatisch deaktiviert (und die anderen beiden Module aktiviert). Wenn Sie mod_pagespeed deaktivieren, wird mod_ruid2 nicht automatisch wieder aktiviert - es wird nur mod_cgi wieder aktiviert. Ohne mod_ruid2 fordert Wordpress die FTP-Zugangsdaten an.
Es ist nicht erforderlich, wp-config.php fest zu codieren oder Dateiberechtigungen (gefährlich) auf 777 zu setzen. Aktivieren Sie mod_ruid2 einfach manuell, starten Sie Apache neu und das Problem mit den FTP- / Dateiberechtigungen ist behoben. Wordpress und Plugins können jetzt wie gewohnt aktualisiert und Medien in die Wordpress-Galerie hochgeladen werden. Es funktioniert sofort.
Ich habe gerade überprüft, dass beim Wechsel von MPM Prefork zu Worker mod_ruid2 deaktiviert wird. Wenn Sie von Worker zu Prefork zurückkehren, wird mod_ruid2 nicht aktiviert, wodurch das in diesem Beitrag beschriebene Problem verursacht wird.
In beiden Fällen muss mod_ruid2 überprüft und aktiviert werden.
Hoffe geholfen zu haben.
1) Ich konnte der obigen Antwort nicht zustimmen, da sie zu allgemein ist
1a) Ich möchte einfach nicht rekursiv den Besitzer aller meiner Dateien wechseln (wie bei der Verwendung einer Schrotflinte, um einen Musquito zu töten). Zumal dies einwandfrei funktioniert.
1b) Wordpress mit der "hinterhältigen" Funktion fragt Sie plötzlich nach Anmeldeinformationen für FTP
2) Also fing ich an, mit Ardee Arams Blei tiefer zu graben. Ich habe die Datei file.php eingecheckt und den Besitz überprüft. Es sieht so aus, als ob die Datei.php von ihrem eigenen Besitz abhängt (der fälschlicherweise als root festgelegt wurde).
Fix: chown www file.php
ANMERKUNG: Ersetzen Sie www durch Ihre Distribution oder Einstellungen (Sie können ps aux | egrep "php | http" verwenden und in der ersten Spalte sehen, was der Eigentümer ist.
Ich hoffe, das hilft jemand anderem, sich darüber zu ärgern. Ich verstehe nicht einmal, warum WordPress sich überhaupt nicht "beschwert" und dann vorschlägt, die FTP-Alternative zu verwenden. Jetzt ist es wie ein "Feature", das plötzlich eingeführt wird.