it-swarm.com.de

Wordpress fragt nach meinen FTP-Anmeldeinformationen, um Plugins zu installieren

Ich habe ein Wordpress-Blog in meinem lokalen System installiert. Was muss ich konfigurieren, damit Wordpress ohne FTP hochladen kann?

92
sasi kanth

Versuchen Sie, den Code in wp-config.php einzufügen:

define('FS_METHOD', 'direct');
257
nickle

Wenn Sie Ubuntu verwenden.

Sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
32
Nanhe Kumar

"Wann immer Sie das WordPress - Kontrollfeld verwenden, um Plugins automatisch zu installieren, zu aktualisieren oder zu löschen, muss WordPress Änderungen an den Dateien im Dateisystem vornehmen.

Bevor Änderungen vorgenommen werden, prüft WordPress zunächst, ob es über das Recht verfügt, das Dateisystem direkt zu bearbeiten.

Wenn WordPress nicht über die erforderlichen Berechtigungen zum direkten Ändern des Dateisystems verfügt, werden Sie nach FTP-Anmeldeinformationen gefragt, damit WordPress versuchen kann, das zu tun, was es über FTP benötigt.

Lösung: Um herauszufinden, unter welchem ​​Benutzer Ihre Apache-Instanz ausgeführt wird, erstellen Sie ein Testskript mit folgendem Inhalt:

<?php echo(exec("whoami")); ?>

Für mich war es ein Dämon und keine www-Daten. Dann korrigieren Sie die Erlaubnis durch:

Sudo chown -R daemon /path/to/your/local/www/folder
15
Aboozar Rajabi

Unter OSX habe ich Folgendes verwendet, und es hat funktioniert:

Sudo chown -R _www:_www {path to wordpress folder}

_www ist der Benutzer, unter dem PHP auf dem Mac ausgeführt wird.

(Möglicherweise müssen Sie auch einige Ordner ändern. Ich hatte das zuerst getan und es wurde nicht behoben. Erst nachdem ich den Befehl chown ausgeführt hatte, funktionierte es, daher bin ich mir nicht sicher, ob es der Befehl chown war alleine oder eine Kombination aus chmod und chown.)

10
Kenny

Ich habe den Besitz des Wordpress-Ordners rekursiv in www-data geändert und Apache neu gestartet.

Sudo chown -R www-data:www-data <folderpath>

Es hat wie ein Zauber funktioniert!

8
KawaiKx

Vom ersten Treffer bei Google :

WordPress fragt nach Ihren FTP-Anmeldeinformationen, wenn es nicht auf die Dateien zugreifen kann direkt. Dies wird normalerweise durch PHP verursacht, das als Apache-Benutzer ausgeführt wird (mod_php oder CGI) und nicht der Benutzer, der Ihre WordPress-Dateien besitzt.

Dies ist in den meisten gemeinsam genutzten Hosting-Umgebungen normal. Die Dateien werden als Benutzer gespeichert und Apache wird als Benutzer Apache oder httpd ausgeführt. Dies ist eine gute Sicherheitsvorkehrung, so dass Exploits und Hacks gehostete Dateien nicht ändern können. Sie könnten dies umgehen, indem Sie alle WP -Dateien auf die Sicherheit 777 setzen. Dies bedeutet jedoch no Sicherheit. Verwenden Sie einfach FTP, es ist die automatisch empfohlene Problemumgehung aus gutem Grund.

7

Zuerst in den Installationsordner verschieben (zum Beispiel) 

cd /Applications/XAMPP/xamppfiles/

Jetzt ändern wir Ihr htdocs-Verzeichnis:

Sudo chown -R daemon htdocs

Geben Sie Ihr root-Passwort ein, wenn Sie dazu aufgefordert werden, und beenden Sie es mit einem chmod-Aufruf:

Sudo chmod -R g+w htdocs
3
Benja Garrido

Ich habe eine lokale Installation von WordPress auf Ubuntu 14.04 durchgeführt und die folgenden Schritte ausgeführt: hier und einfach ausgeführt:

Sudo chown -R www-data:www-data {path_to_your_project_directory}

mein Problem mit dem Download von Plugins wurde behoben. Der einzige Grund, warum ich diesen Beitrag hier verlasse, ist der, dass ich, als ich mein Thema googelte, eines der ersten Ergebnisse war und mich zur Lösung meines Problems führte.

Hoffe, das hilft jedem!

3
Hiren Gohel

Wir hatten das gleiche Problem als Teil eines größeren Problems. Die vorgeschlagene Lösung von 

define('FS_METHOD', 'direct');

versteckt das Fenster, aber dann hatten wir immer noch Probleme mit dem Laden von Themen und Upgrades usw. Es hängt von den Berechtigungen ab. In unserem Fall haben wir das Problem jedoch behoben, indem wir vom php - Betriebssystemhersteller mod_php zum sichereren php - Betriebssystemhersteller FastCGI wechselten Anwendung .

2
malta

Am einfachsten lösen Sie dieses Problem, indem Sie Ihrem wp-config.php folgende FTP-Informationen hinzufügen.

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 ist der vollständige Pfad zum Ordner "base" (ABSPATH) der WordPress-Installation FTP_CONTENT_DIR ist der vollständige Pfad zum Ordner wp-content der WordPress-Installation .FTP_PLUGIN_DIR ist der vollständige Pfad zum Plugins-Ordner der WordPress-Installation.

2

Wie von Niels erwähnt, geschieht dies, weil der Benutzer des Serverprozesses nicht in den Wordpress-Ordner schreiben kann.

Aber hier ist die Sache, die viele Artikel nicht erklären. Es ist der Besitzer des PHP-Prozesses, nicht der Nginx-Prozess. Wenn Sie versuchen, den Nginx-Besitzer zu ändern, wird dies nicht gelöst.

Um das Problem zu lösen, führen Sie ps aux aus, um zu sehen, welcher Benutzer den PHP-Fpm-Prozess besitzt. Überprüfen Sie dann, ob der Benutzer mit dem Besitzer des WordPress-Ordners identisch ist oder zumindest in diesen Ordner schreiben kann. Wenn der Benutzer nicht schreiben kann, müssen Sie die Berechtigungen und/oder den Besitz des Ordners ändern. oder die beiden Benutzer (Server- und Wordpress-Ordnerinhaber) in eine gemeinsame Gruppe aufnehmen, die in den Ordner schreiben kann; oder ändern Sie die php.ini "user" -Eigenschaft in einen Benutzer, der in den Ordner schreiben kann.

1
mahemoff

Es gibt viele ähnliche Antworten auf diese Frage, aber keine davon berührt die eigentliche Ursache. Sebastian Schmid's Kommentar zum ursprünglichen Beitrag berührt es aber nicht vollständig. Hier ist meine Einstellung vom 06.11.2010:

Ursache

Wenn Sie versuchen, ein Plugin über die WordPress-Administrationsoberfläche hochzuladen, ruft WordPress eine Funktion mit dem Namen "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ) auf. Diese Routine versucht, eine Datei an den betreffenden Ort zu schreiben (in diesem Fall das Plugin-Verzeichnis). Es kann hier natürlich sofort fehlschlagen, wenn Dateiberechtigungen nicht eingerichtet sind, damit der WordPress-Benutzer (die Benutzeridentität, die das PHP ausführt) die Datei an den betreffenden Ort schreiben kann.

Wenn die Datei erstellt werden kann, erkennt diese Funktion den Besitzer der temporären Datei sowie den Eigentümer der aktuellen Datei der Funktion (ref: /wp-admin/includes/file.php:1572 ) und vergleicht die beiden. Wenn sie übereinstimmen, dann, in Wordpress Worten, "WordPress erstellt Dateien mit demselben Besitzer wie die WordPress-Dateien. Dies bedeutet, dass das Ändern und Erstellen neuer Dateien über PHP sicher ist", und Ihr Plugin wird erfolgreich ohne die Aufforderung zur Eingabe der FTP-Zugangsdaten hochgeladen. Wenn sie nicht übereinstimmen, wird die Eingabeaufforderung für die FTP-Anmeldeinformationen angezeigt.

Korrekturen

  1. Stellen Sie sicher, dass das Plugin-Verzeichnis für die Identität Ihres PHP-Prozesses schreibbar ist.
  2. Stellen Sie sicher, dass die Identität, mit der Ihr PHP-Prozess ausgeführt wird, der Dateieigentümer für Folgendes ist: 

    a) Alle WordPress-Anwendungsdateien oder ... 
    b) Zumindest die Datei /wp-admin/includes/file.php

Letzte Kommentare 

Ich bin nicht besonders daran interessiert, die Datei eigenschaft auf file.php anzuwenden, um dieses Problem zu umgehen (es fühlt sich ein bisschen hackig an, um es gelinde auszudrücken!). Es scheint mir an diesem Punkt, dass die WordPress-Codebasis dazu neigt, den PHP -Prozess unter demselben Benutzerprinzipal wie der Dateibesitzer für die WordPress-Anwendungsdateien ausführen zu lassen. Ich würde mich dazu über einige Kommentare der Community freuen.

0
Matt Woodward

Ich stand vor dem gleichen Problem! Ich habe den folgenden Code in der Datei wp-config.php (in einer beliebigen Zeile) hinzugefügt und funktioniert jetzt!

define('FS_METHOD', 'direct');
0
erovere