it-swarm.com.de

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

Ich verfolge Dateiberechtigungen ändern "WordPress Codex , doch wenn ich versuche, plugin und/oder theme über wp-admin zu aktualisieren und/oder zu installieren, erhalte 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/
# 

httpd wird als Apache ausgeführt:

$ 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 (install und/oder update) über /wp-admin ohne FTP-Anmeldeinformationen auszuführen.

Wie kann ich das machen?

21
alexus

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

define( 'FS_METHOD', 'direct' );

Lassen Sie mich wissen, wie es bei Ihnen funktioniert.

42

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

Kasse dieser Artikel für weitere Details.

12
Syamraj K

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 nur so viel größer als die Bequemlichkeit, einige Sekunden zu sparen, indem die FTP-Anmeldeinformationen nicht eingegeben werden müssen.

1
Mark Kaplun

Obwohl es völlig korrekt ist, den Besitz als root:Apache mit den Berechtigungen 775 und httpd als Apache auszuführen, gefällt dies Wordpress nicht. Der Eigentümer soll Apache laut wp-admin/includes/file.php sein:

    // 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 );
  }

Ihr 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.

1
w00t

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.

0
MarkPraschan

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 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 Zweite Codezeile hinzufügen 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)

Bearbeiten: Entfernen Sie unbedingt die Zeile define("FS_METHOD", "direct");, wenn sie in wp-config.php verwendet wird/wurde, da dies absolut verboten ist, wenn die obigen Codezeilen wie gewünscht ausgeführt werden.

0
Charles