…stehen bald Schweißperlen auf der Stirn.
Dabei gibt es ein paar relativ einfache Möglichkeiten um WordPress dazu zu bringen, seiner Arbeit ganz normal nachzugehen.
Einstellen der FTP Zugangsdaten in wp-config.php
Oft reicht es einfach, die FTP Zugangsdaten einzugeben und von FTP auf FTPS umzustellen.
Wenn das nicht funktioniert oder das dauernde Eingeben nervt, kann man die Zugangsdaten in der wp-config.php hinterlegen:
define('FS_METHOD', 'direct'); define('FTP_BASE', '/var/pfad/zum/richtigen/wordpress/verzeichnis'); define('FTP_USER', 'meinftpusername'); define('FTP_PASS', 'dasftppasswort'); define('FTP_HOST', 'ftp.meinedomain.com'); define('FTP_SSL', true);
Es kann sein, dass diese Einstellungen nicht gleich funktionieren. In dem Fall muss man sich mit den einzelnen Parametern ein bisschen spielen, und zb FS_METHOD auf auf ftpext, ssh2 o.ä umstellen.
Natürlich kann es sein, dass man SSL nicht verwenden kann. Dann muss man einfach die letzte Zeile weglassen.
Die einzelnen Möglichkeiten sind im WordPress Codex nachzulesen:
http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants
Änderung der Berechtigung am Server mittels SSH
Wenn sich WP oder Plugins nicht updaten lassen kann auch ein Rechteproblem vorliegen. Der erste Schritt ist mal zu schauen, ob die Dateien/Ordner schreibgeschützt sind und dann den User zu überprüfen. Oft ist der FTP-Benutzer ein anderer als der Webserver und wenn da die Gruppe nicht passt, geht das Update nicht weil die Berechtigungen fehlen.
Wenn man SSH-Zugang (SFTP mit Shell) hat, dann kann man die Eigentümer evtl. direkt am Server auf den Webserver-Benutzer ändern (sofern der SSH/SFTP-Benutzer dazu das Recht hat). Der Webserver Benutzer heißt meistens www-data (lässt sich rausfinden indem man ein php-Script hochlädt und dann ausführt, welches eine Datei anlegt).
Mit folgendem Einzeiler kann man den Eigentümer recht zügig ändern:
find . -user <alterBenutzer> -exec chown www-data:www-data {} \;
Der Befehl macht folgendes:
Finde alle Dateien im aktuellen Verzeichnis oder darunter (.) die dem Benutzer <alterBenutzer> gehören und übereigne sie an Benutzer www-data und Gruppe www-data.
UPDATE: Wie ist das mit den Rechten gemeint?
Kurz: Es fehlt die Schreibberechtigung. Die aktuelle WP-Instanz darf eventuell nicht auf die Festplatte schreiben. Also der Benutzer, der für das Ausliefern der Seiten zuständig ist. Auf einem Webserver laufen viele Dienste. Diese werden oft direkt einem Benutzer zugewiesen. Der Webserver auf Linuxgeräten ist oft dem Benutzer „www-data“ zugewiesen.
Wenn der Benutzer “ www-data“ jetzt keine Schreibberechtigung hat, können auch keine Updates durchgeführt werden. Updates lösen ja einen Schreibvorgang auf der Festplatte des Servers aus.
Wenn das Problem bei einer bisher funktionierenden WordPress-Instanz auftritt, kann auch der Host/Server/vServer daran Schuld haben.
UPDATE: Ich kann mich per FTP verbinden, aber diese Daten funktionieren in der wp-config.php nicht!
Das Problem lässt sich oft lösen, indem man mit dem FS_METHOD-Parameter herumspielt.
Es gibt da vier Auswahlmöglichkeiten, die man durchprobieren kann:
- direct (Standardwert)
- ssh2
- ftpext
- ftpsockets
Näheres befindet sich im Bereits verlinkten Artikel im Codex zum Thema wp-config.php.
Eine andere Möglichkeit ist, dass der Hoster auf eine sichere Verbindung umgestellt hat, dann muss man FTP_SSL auf true setzen:
define( 'FTP_SSL', true );
Es kann auch sein, dass man den Port explizit angeben muss, wobei 666 nur als (unrealistisches!) Beispiel für den Port herhalten muss. Ein Standard wäre zb der Port 21.
define( 'FTP_HOST', 'ftp.meinedomain.com:666' );
Dont’s
Natürlich könnte man per FTP zb die Verzeichnisrechte auf 777 setzen. Das ist eine ganz ganz schlechte Idee, denn dann hat jeder alle Berechtigungen.