WordPress braucht FTP Verbindungsinformationen bei den Plugins

Fehler

Folgender Fehler kann bei WordPress auftreten, vermutlich nur bei bestimmten Hostern, nachdem es installiert oder hosterübergreifend umgezogen wurde:
Das Bild zeigt den WordPress Dialog, bei dem FTP Verbindungsinformationen benötigt werden sowie den Fehler, dass diese nicht korrekt seien - egal, welche Daten man eingibt. Das liegt an fehlerhaften Besitzrechten nach der WordPress Installation auf einigen Hostern wie beispielsweise auch All-Inkl und Hosteurope.
Der Fehler erscheint vermutlich bei der Installation oder Aktualisierung von Plugins oder Themes.

Erklärung

Das Bild zeigt den WordPress Dialog, bei dem FTP Verbindungsinformationen benötigt werden. Das Phänomen tritt auf, wenn ihr WordPress von Hand auf euren FTP hochgeladen und danach die Installation ausgeführt habt. Dadurch ist das WordPress Core mit den Besitzerrechten eures FTP Nutzers, mit dem ihr die WordPress Dateien hochgeladen habt, versehen. Alle Tätigkeiten aus dem WordPress System heraus, also beispielweise das Installieren von Plugins über die WordPress „Plugins“ Oberfläche, werden jedoch server-intern von einem anderen Nutzer ausgeführt. Dieser Nutzer heißt je nach System oftmals PHP-User, www-User, www-data oder ähnlich. Nun fehlen dem Nutzer aber die Zugriffsrechte auf die entsprechenden Ordner.

Lösungen

Es gibt mehrere mögliche Lösungen:

1)
Gebt bei der WordPress Nachfrage die FTP-Nutzerdaten ein, mit denen ihr WordPress hochgeladen habt. Den Nutzer könnt ihr, falls ihr es nicht mehr genau wisst, vielleicht mit dem WebFTP-Tool eures Hosters auslesen:
Das Bild zeigt die Oberfläche eines WebFTP Programms mit markierten Besitzerinformationen eines Ordners
Im besten Falle führt WordPress danach alle Plugin Aktionen ohne Klagen aus und ihr hört nie wieder von dem Problem. Aber dann wärt ihr wahrscheinlich auch gar nicht hier gelandet.

2)
Ändert die Besitzrechte von wp-content. Nutzt dafür vom Hoster zur Verfügung gestellte Möglichkeiten der Besitzrechteveränderung (Adminbackend -> Tools).
Zuerst wird der Ordner wp-content auf den PHP-User gestellt, die benötigte WordPress Funktion getestet (z.B. Plugin-Update, sollte jetzt gehen) und dann stellt ihr den Besitzer wieder zurück auf den FTP-User. Bei mir hat das die Probleme dauerhaft behoben und die Besitzrechte sind einheitlich weiterhin auf dem FTP-Nutzer.

3)
Mein zweiter Tipp ist eigentlich der langfristig sicherste: installiert WordPress nicht von Hand sondern über die 1-Click-Install-Methode eures Hosters. Praktisch jeder Webhoster bietet die Installation von bekannter Software auf seinem System an, WordPress ebenfalls. Dabei richtet der Hoster ein fertig installiertes und eingerichtetes System für euch ein, meistens mit nur wenigen Klicks. Dieses System hat definitiv keine Rechteprobleme, ist nun aber frisch installiert. Je nachdem, wie jung oder alt euer Blog ist, kostet es nun weniger oder mehr Aufwand, die Inhalte in das neu installierte System zu transferieren. Aber diese Lösung ist am sichersten und wird keine zukünftigen Probleme mehr machen, ich empfehle das also.
Export/Import: Der Export besteht im Grundlegenden aus 2 Typen: Daten (Beiträge, Kommentare usw), Plugins und Themes.
Daten: Benutzt entweder die WordPress eigene Export-Funktion unter „Werkzeuge -> Daten exportieren“ oder exportiert eure komplette WordPress Datenbank (SQL Export via phpMyAdmin). Diesen Export dann im neuen WordPress bzw. dessen Datenbank.
Plugins/Themes: Entweder ihr installiert im neuen WordPress die Komponenten von Hand (je nachdem wieviele es sind), oder ihr zieht euch direkt vom FTP die Ordner „plugins“ und „themes“ und überschreibt einfach diese Ordner in eurem neuen WordPress System.
Anschließend müsste der neue WordPress Blog die Plugins, Themes (die beide ggf. noch aktiviert werden müssen) und Daten enthalten.
Ich werde aber demnächst nochmal einen ausführlichen Beitrag über gute WordPress Backup Methoden schreiben und eine komplette Backup Lösung konzipieren.

4)
Tragt in eure .htaccess Datei in der Root eures WordPress Blogs (also direkt im obersten Ordner, beispielsweise „/blog/“) folgende Zeile ein:

AddHandler php5-cgi .php

Hintergrund: Link

5 Kommentare

  1. Hier ein weiterer Tipp für Leute, die massiv eingeschränkt sind bei ihrem Hoster: Ein kleines PHP-Script schreiben, dass jede Datei einliest und (z.B. in einem anderen Ordner) neu ablegt.

    Dieses Script dann einmal über den Browser aufrufen (danach löschen!).

    Da das Script mit den Rechten des PHP-Nutzers läuft, werden die neuen Dateien mit den korrekten Rechten angelegt. WordPress sollte danach in der Lage sein, sich ohne Eingabe der FTP-Zugangsdaten selbstständig zu aktualisieren.

  2. Danke für den Tipp! Ich bin mir unsicher, ob es gut ist, wenn der komplette Wordress Ordner dem PHP Nutzer gehört. Ich weiß nicht ob das noch Probleme machen kann. Gehen dann normale FTP Uploads über ein FTP Programm mit dem normalen FTP Nutzer noch?

    Ich habe gerade mal eine 1-Click-Installation von WordPress gemacht – da gehört auch der komplette WordPress Ordner und alle Unterordner dem FTP Nutzer, nirgends ist der PHP Nutzer nötig. Und trotzdem läuft alles. Also vermutlich muss man das Problem auch irgendwie anders angehen können.

    Ich schreibe jetzt trotzdem kurz so ein Script, jage das über die noch funktionierende 1-Click-Installation und schaue mal, ob danach immernoch alles geht 😉

    LG

  3. Update: Also das klappt alles nicht so richtig. Ich habe ein einfaches Skript geschrieben, welches Dateien kopiert:

    function listFolderFiles($dir) {
    	$ffs = scandir($dir);
    	foreach($ffs as $ff) {
    		echo $ff;
    		if($ff != '.' && $ff != '..') {
    			if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
    			// copy
    			if ( @copy ( $ff, "__".$ff ) ) {
    			   echo '$ff wurde kopiert<br>';  
    			}
    		}	
    	}
    }
    

    Aber egal ob ich das Skript direkt ausführe oder als cronjob ausführen lasse: Die Besitzrechte werden dadurch nicht auf den Skriptuser verändert. Eventuell müsste man es irgendwie durch den Blog ausführen lassen.
    Und chown() scheint von All-Inkl nicht erlaubt zu sein, also Besitzrechte so ändern geht auch nicht.
    ABER: Wie ich vermutete: Ein Ordner, der dem PHP User gehört (geändert über das Feature im Backend), ist nicht mehr durch den FTP User schreibbar. Das heißt, wenn der komplette Blog dem FTP User gehört, kann man dort via FTP keine Dateien mehr schreiben oder hochladen.
    Das ist also nicht empfehlenswert. Das habe ich in meinem Beitrag hier damals bereits bemerkt.

  4. Hallöle. Das Problem daran, dass die PHP-Dateien dem FTP-Nutzer und nicht dem PHP-Nutzer gehören, ist eben, dass WordPress für automatische Updates eben die FTP-Zugangsdaten benötigt. Diese werden Plaintext in der Datenbank abgelegt.

    Je nach Hoster sind die FTP-Zugangsdaten jedoch auch gleich noch die Zugangsdaten zur Webhosting-Verwaltung des Betreibers. Das ist ziemlich ungeil. 🙂

    Eigentlich sollte man generell die Finger von einem Hoster lassen, bei dem es einen einzelnen PHP-Nutzer gibt, der sich vom FTP-Nutzer unterscheidet. Das deutet nämlich auf ein ziemlich schlechtes Setup hin. Um solchen Problemen aus dem Weg zu gehen, gibt es eigentlich Tools wie mod_suphp oder direkt PHP-FPM.

Schreibe einen Kommentar