Um die angeforderte Aktion auszuführen, muss WordPress auf Ihren Webserver zugreifen. Bitte geben Sie Ihr FTP ein

28

Ich verfolge das Ändern von Dateiberechtigungen «WordPress Codex . Wenn ich jedoch versuche, zu aktualisieren und / oder zu installieren pluginund / oder zu themedurchlaufen wp-admin, verfolge ich Folgendes:

Um die angeforderte Aktion auszuführen, muss WordPress auf Ihren Webserver zugreifen. Bitte geben Sie Ihre FTP-Zugangsdaten ein, um fortzufahren. Wenn Sie sich nicht an Ihre Anmeldeinformationen erinnern, wenden Sie sich an Ihren Webhost.

von der Dateisystemebene:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpdLäuft wie folgt apache:

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

Ich möchte in der Lage sein, die angeforderte Aktion ( installund / oder update) /wp-admin ohne FTP-Anmeldeinformationen auszuführen .

Wie kann ich das machen?

alexus
quelle
1
Ist das eine localhost Installation? Wenn ja, siehe: wordpress.stackexchange.com/questions/19649/…
Greg McMullen
1
@GregMcMullen nein, dies ist KEINE Installation von localhost & "akzeptierte" Antwort von dem Link, zu dem Sie einen Kommentar abgeben, ist, rekursiv den Besitz eines WordPress-Verzeichnisses zu ändern nobody- dies funktioniert bei mir aufgrund der Ausführung httpdals nicht apache.
Alexus
@alexus Es sieht so aus, als ob Ihre Dateien im Moment root.apache gehören. Haben Sie apache.apache anstelle von nobody ausprobiert?
Tim Malone
@TimMalone Einstellung files / Verzeichnis wie apache.apacheoder root.apachewürde keinen Unterschied machen, solange httpdläuft wie apache, und apache‚s uidist ein Teil der apache gid‘ Gruppe s, es ist alles das Gleiche, weil meine Berechtigungen gesetzt g+w.
Alexus
@alexus Ok, noch etwas zu versuchen - setze FS_METHOD auf 'direct' in wp-config.php ( codex.wordpress.org/… )
Tim Malone

Antworten:

52

Fügen Sie Folgendes zu wp-config.php hinzu:

define( 'FS_METHOD', 'direct' );

Lassen Sie mich wissen, wie es bei Ihnen funktioniert.

Narendra Solanki
quelle
funktionierte für mich, es sei denn, Sie haben schlechte Berechtigungen im Dateisystem. Übrigens habe ich es ganz oben in der wp-config.php hinzugefügt
Toskan
Lesen Sie unbedingt den mit Alexus verknüpften Beitrag, bevor Sie diese Methode anwenden. Diese Methode funktioniert definitiv (sie hat das Problem für mich gelöst), aber Sie sollten diese Methode definitiv nicht in einer gemeinsam genutzten Hosting-Umgebung oder einer gefährdeten Umgebung verwenden, in der Sie die Sicherheit gefährden könnten.
JamesHoux
16

Dies bedeutet, dass WordPress nur eine eingeschränkte Berechtigung zum Ändern des Ordners hat, in dem es installiert wurde.

Um dies zu beheben, müssen Sie nur die erforderlichen Berechtigungen dafür bereitstellen.

Führen Sie den folgenden Befehl in Ihrem Terminal / Putty / Commandline Prompt aus, nachdem Sie sich über SSH mit Ihrem Server verbunden haben:

sudo chown -R apache:apache /var/www/html

Bezahlen Sie diesen Artikel für weitere Informationen.

Syamraj K
quelle
Berechtigungen sind in Ordnung, lesen Sie meine Frage)
Alexus
3
chown: ungültiger Benutzer: 'apache: apache'
numediaweb
1
Denken Sie daran, dass Apache verschiedene Benutzer in verschiedenen Linux-Versionen sein kann. Sie können also die Gruppe <Benutzername> ausprobieren und feststellen, ob ein Fehler vorliegt oder nicht, da Benutzer und Gruppe für Apache normalerweise identisch sind. Verwenden Sie dann den richtigen Benutzer. Die in Ubuntu am häufigsten verwendete Variante ist "www-data: www-data" oder "www: www", um Apache-Dateien anzuzeigen.
MontyThreeCard
2

Obwohl es völlig richtig ist, den Besitz wie root:apachemit den Berechtigungen 775 zu haben und httpd als auszuführen apache, gefällt dies Wordpress nicht. Sie will den Eigentümer sein apache, wie pro wp-admin/includes/file.php:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

Ihre wäre:
wp_file_owner = root
temp_file_owner = apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Wenn $ wp_file_owner mit $ temp_file_owner identisch ist, fahren Sie fort. Ihre würden sich im elseif verfangen, das laut Kommentar kein Löschen / Erstellen, sondern nur Aktualisierungen zulässt (ich habe dies überprüft, indem ich den Code eines Plugins in Wordpress aktualisiert habe, und es hat funktioniert).

Hinweis: Ich habe den Code nicht ausführlich durchgesehen. Dies ist nur meine schnelle Interpretation. Ich hatte das gleiche Problem und nachdem ich die Benutzergruppe gewechselt hatte, sodass der httpd-Benutzer auch der Dateibesitzer ist, wurden keine FTP-Anmeldeinformationen mehr abgefragt.

w00t
quelle
Yup, wechselte den Besitzer, um www-datafür mich zu arbeiten. Lustiges WordPress!
Ankush981
1

Keine direkte Antwort, muss aber wahrscheinlich gesagt werden - dies ist ein Problem, das Sie vermeiden sollten, es sei denn, Sie sprechen von einer lokalen Entwicklung. In diesem Fall können Sie die Berechtigungen einfach auf 777 setzen.

Der Grund dafür ist, dass, wenn der Webserver Ihren Code überschreiben kann, jeder darauf ausgeführte Schadcode dies ebenfalls kann. Das Risiko ist viel größer als die Bequemlichkeit, einige Sekunden zu sparen, indem die FTP-Anmeldeinformationen nicht eingegeben werden müssen.

Mark Kaplun
quelle
0

Obwohl die Frage nicht mehr so ​​neu ist, möchte ich meine zwei Cent auch zu diesem Thema hinzufügen.

Viele Leute haben Centos (7) auf ihrem VPS-Server und folgende Codezeilen könnten ihr Problem lösen.

Imho hat alles mit SELinux zu tun, was WordPress daran hindert, seinen Job wie gewünscht zu erledigen. Es geht zu weit, um zu erklären, was SELinux ist und was es tut. Zu Ihrer Information beginnt die Einführung mit:

Security-Enhanced Linux (SELinux) ist ein obligatorischer Zugriffskontrollmechanismus (MAC), der im Kernel implementiert ist.

Nur 3 Schritte zum Folgen:

  • 1 Öffnen Sie ein Terminal (oder greifen Sie über SSH auf den Server zu)
  • 2 Fügen Sie die folgende Codezeile hinzu chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Fügen Sie die zweite Codezeile hinzu chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

Kein Neustart vom Server oder Neustart von einem Daemon erforderlich.

Ich werde nicht sagen, dass es allen hilft, aber für diejenigen, die SELinux nicht deaktiviert haben, sollte es eine Erleichterung sein.

Prost

Hinweis: Bitte passen Sie an Ihre eigenen Bedürfnisse an (dh Pfad zu WordPress)

edit: Achten Sie darauf, die Zeile zu entfernen, define("FS_METHOD", "direct");wenn sie verwendet wird / wurde, wp-config.phpda dies absolut kein Problem ist, wenn die obigen Codezeilen wie gewünscht ausgeführt werden.

Charles
quelle
0

In meinem Fall habe ich das gelöst, indem ich von GIT zurück in den FTP-Modus gewechselt bin.

Keine Warnung mehr.

Vielleicht hilft das auch jemand anderem.

MarkPraschan
quelle