Ich habe ein WordPress-Blog in meinem lokalen System installiert. Wenn ich jedoch versuche, Plugins vom Administrator hinzuzufügen, wird nach dem FTP-Zugriff gefragt. Was muss ich konfigurieren, damit WordPress ohne FTP hochladen kann?
Ich habe ein WordPress-Blog in meinem lokalen System installiert. Wenn ich jedoch versuche, Plugins vom Administrator hinzuzufügen, wird nach dem FTP-Zugriff gefragt. Was muss ich konfigurieren, damit WordPress ohne FTP hochladen kann?
Antworten:
Versuchen Sie, den Code in wp-config.php hinzuzufügen:
define('FS_METHOD', 'direct');
FS_METHOD
ist kurz für FILESYSTEM_METHOD
. Wenn Sie festlegen, dass direct
nur die Dateien geändert werden sollen - auch bekannt als kein FTP -, müssen Sie WordPress zwingen, die Dateien auf der Site direkt zu ändern.
Wenn Sie Ubuntu verwenden.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
hier sein: codex.wordpress.org/Hardening_WordPress oder hier: stackoverflow.com/questions/18352682/…
"Immer wenn Sie das WordPress-Kontrollfeld verwenden, um Plugins automatisch zu installieren, zu aktualisieren oder zu löschen, muss WordPress Änderungen an Dateien im Dateisystem vornehmen.
Bevor WordPress Änderungen vornimmt, prüft es zunächst, ob es Zugriff auf die direkte Bearbeitung des Dateisystems hat.
Wenn WordPress nicht über die erforderlichen Berechtigungen verfügt, um das Dateisystem direkt zu ändern, werden Sie nach FTP-Anmeldeinformationen gefragt, damit WordPress versuchen kann, über FTP das zu tun, was es benötigt. "
Lösung: Um herauszufinden, als welcher Benutzer Ihre Apache-Instanz ausgeführt wird, erstellen Sie ein Testskript mit folgendem Inhalt:
<?php echo(exec("whoami")); ?>
Für mich war es Daemon und nicht www-Daten. Korrigieren Sie dann die Berechtigung durch:
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
die Ihnen sogar Gruppendaten über die Benutzer-ID hinaus liefert:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
so sehen Sie die gleichen Informationen:sudo chown -R `whoami` /path/to/your/local/www/folder
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 hat es nicht behoben. Erst als ich den Befehl chown ausgeführt habe, hat es funktioniert, daher bin ich mir nicht sicher, ob es der Befehl chown war allein oder eine Kombination aus chmod und chown.)
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!
Vom ersten Treffer bei Google :
WordPress fragt nach Ihren FTP-Anmeldeinformationen, wenn es nicht direkt auf die Dateien zugreifen kann. Dies wird normalerweise dadurch verursacht, dass PHP als Apache-Benutzer (mod_php oder CGI) ausgeführt wird und nicht als Benutzer, dem Ihre WordPress-Dateien gehören.
Dies ist in den meisten gemeinsam genutzten Hosting-Umgebungen eher normal. Die Dateien werden als Benutzer gespeichert und Apache wird als Benutzer apache
oder ausgeführt httpd
. Dies ist eine gute Sicherheitsmaßnahme, sodass Exploits und Hacks gehostete Dateien nicht ändern können. Sie können dies umgehen, indem Sie alle WP-Dateien auf 777-Sicherheit einstellen. Dies bedeutet jedoch keine Sicherheit. Ich würde daher dringend davon abraten. Verwenden Sie einfach FTP, es ist die automatisch empfohlene Problemumgehung mit gutem Grund.
Wechseln Sie zuerst in Ihren Installationsordner (zum Beispiel).
cd /Applications/XAMPP/xamppfiles/
Jetzt werden wir Ihr htdocs-Verzeichnis ändern:
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
Ich habe eine lokale Installation von WordPress unter Ubuntu 14.04 durchgeführt, indem ich die hier beschriebenen Schritte befolgt und einfach ausgeführt habe:
sudo chown -R www-data:www-data {path_to_your_project_directory}
löste mein Problem mit dem Herunterladen von Plugins. Der einzige Grund, warum ich diesen Beitrag hier verlasse, ist, dass dies eines der ersten Ergebnisse war, als ich mein Problem googelte, und es mich zur Lösung meines Problems führte.
Hoffe, dieser hilft jedem!
Wir hatten das gleiche Problem als Teil eines größeren Problems. Die vorgeschlagene Lösung von
define('FS_METHOD', 'direct');
verbirgt dieses Fenster, aber dann hatten wir immer noch Probleme beim Laden von Themen und Upgrades usw. Es hängt mit Berechtigungen zusammen. In unserem Fall haben wir das Problem jedoch behoben, indem wir vom PHP-OS-Anbieter mod_php zur sichereren PHP-OS-Anbieter-FastCGI-Anwendung gewechselt sind .
Wenn Wordpress während der Installation eines Plugins nach Ihrem Hostnamen oder Ihren FTP-Details fragt. Befolgen Sie dann diese Schritte:
Melden Sie sich bei Ihrem Server an und navigieren Sie zu / var / www / html / wordpress / . Öffnen Sie wp-config.php und fügen Sie diese Zeile nach define ('DB_COLLATE') hinzu.
define('FS_METHOD', 'direct');
Wenn die Fehlermeldung "Verzeichnis konnte nicht erstellt werden" angezeigt wird. Geben Sie Ihrem WordPress-Verzeichnis Schreibberechtigungen in rekursiver Form
chmod -R go+w wordpress
HINWEIS. Widerrufen Sie diese Berechtigungen aus Sicherheitsgründen, sobald Sie ein Plugin als installiert haben
chmod -R go-w wordpress
Der einfachste Weg, um dieses Problem zu lösen, besteht darin, die folgenden FTP-Informationen zu Ihrem hinzuzufügen wp-config.php
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.
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 des Nginx-Prozesses. Wenn Sie versuchen, den Nginx-Besitzer zu ändern, wird dies nicht gelöst.
Versuchen Sie, ps aux
das Problem zu beheben , um festzustellen , welcher Benutzer den php-fpm-Prozess besitzt. Überprüfen Sie dann, ob der Benutzer derselbe Benutzer wie der Eigentümer des WordPress-Ordners ist oder zumindest darauf schreiben kann. Wenn der Benutzer nicht darauf schreiben kann, müssen Sie die Berechtigungen und / oder den Besitz des Ordners ändern. oder ordnen Sie die beiden Benutzer (Serverbesitzer und WordPress-Ordnerbesitzer) einer gemeinsamen Gruppe zu, die in den Ordner schreiben kann. oder ändern Sie die Eigenschaft "user" von php.ini in einen Benutzer, der in den Ordner schreiben kann.
Es gibt viele ähnliche Antworten auf diese Frage, aber keine davon berührt die Grundursache vollständig. Sebastian Schmids Kommentar zum ursprünglichen Beitrag berührt ihn, aber nicht vollständig. Hier ist meine Einstellung vom 06.11.2018:
Ursache
Wenn Sie versuchen, ein Plugin über die WordPress-Administrationsoberfläche hochzuladen, ruft WordPress eine Funktion namens "get_filesystem_method ()" auf (ref: /wp-admin/includes/file.php:1549 ). Diese Routine versucht, eine Datei an den betreffenden Speicherort (in diesem Fall das Plugin-Verzeichnis) zu schreiben. Es kann hier natürlich sofort fehlschlagen, wenn die Dateiberechtigungen nicht richtig eingerichtet sind, damit der WordPress-Benutzer (denken Sie an die Benutzeridentität, die das PHP ausführt) die Datei an den betreffenden Speicherort schreiben kann.
Wenn die Datei erstellt werden kann, erkennt diese Funktion den Dateieigentümer der temporären Datei zusammen mit dem Dateieigentümer der aktuellen Datei der Funktion (Ref: /wp-admin/includes/file.php:1572 ) und vergleicht die beiden. Wenn sie dann übereinstimmen, heißt es in WordPress: "WordPress erstellt Dateien als derselbe Eigentümer wie die WordPress-Dateien. Dies bedeutet, dass es sicher ist, neue Dateien über PHP zu ändern und zu erstellen", und Ihr Plugin wird erfolgreich ohne die Eingabeaufforderung für FTP-Anmeldeinformationen hochgeladen. Wenn sie nicht übereinstimmen, erhalten Sie die Eingabeaufforderung FTP-Anmeldeinformationen.
Korrekturen
Stellen Sie sicher, dass die Identität, die Ihren PHP-Prozess ausführt, 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, Dateieigentum speziell auf die Datei file.php anzuwenden, um dieses Problem zu umgehen (es fühlt sich gelinde gesagt ein bisschen hackig an!). An diesem Punkt scheint es mir, dass die WordPress-Codebasis dazu neigt, dass wir den PHP-Prozess unter demselben Benutzerprinzip ausführen wie der Dateibesitzer für die WordPress-Anwendungsdateien. Ich würde einige Kommentare der Community dazu begrüßen.