Gelöst: Worpress 2.5.1 – Automatisches Plugin-Update funktioniert nicht
Samstag, 21. Juni 2008 | Autor: LastOne
Dem ein oder anderem wird es sicher auch schon so gegangen sein, man möchte die Auto-Update Funktion der Plugins nutzen aber leider erscheint nur eine Fehlermeldung:
Plugins aktualisieren
Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files directory. in
/is/htdocs/wpxxxxxx_xxxxxx/lms2/wp-admin/includes/class-wp-filesystem-ftpext.php on line 327Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files directory. in
/is/htdocs/wpxxxxxx_xxxxxx/lms2/wp-admin/includes/class-wp-filesystem-ftpext.php on line 327WordPress-Verzeichnis nicht gefunden.
Ein Blick ins deutsche WordPress-Forum offenbart dann auch schnell das es zwar schon andere User mit diesem Problem gab, aber keine generelle Lösung existiert. Da die dort genannten Vorschläge
bei mir leider nicht halfen habe ich mich mal etwas weiter mit der Materie bzw Google und WordPress trac auseinander gesetzt und eine Lösung gefunden die nun bei mir funktioniert und auch bei weiteren Usern laufen sollte. Ein Teil des Problems scheint ein Bug im WP-Code zu sein, der sich wohl je nach verwendetem Hoster auswirkt oder auch nicht. Bei Hosteurope funktioniert es so z.B. nicht.
Es gibt eine kurze und einfache Lösung aber auch eine etwas längere. Aber alles der Reihe nach.
Die folgende Anleitung bezieht sich auf WordPress Version 2.5.1, dürfte aber auch in 2.5 oder nachfolgenden Versionen funktionieren falls der Fehler bis dahin noch nicht behoben wurde. Alle Änderungen geschehen auf eigenes Risiko, ich hafte für nichts.
Lösung:
In der Datei “wp-admin/includes/file.php” muss in Zeile zeile 324
if ( getmyuid() == fileowner($tempFile) )
in
if ( posix_getuid() == fileowner($tempFile) )
geändert werden
Damit müsste das Auto-Update nun funktionieren, Vorausgesetzt die Rechte der Plugin-Ordner sind per Chmod auf 777 gestellt und das Plugin ist in der korrekten Ordnerstruktur hochgeladen worden ohne zusätzliche Dateien mit in den Ordner zu packen. Die Codezeile stammt ursprünglich von hier .
Erweiterte Lösung:
Zusätzlich kann man dann in die Datei “wp-config.php” eine Definition für das Temp-Verzeichnis von WordPress erstellt werden. Dies geschieht über
define(‘WP_TEMP_DIR’, ini_get(‘upload_tmp_dir’));
Die Zeile einfach unter die anderen “define” Zeilen in der Datei “wp-config.php” einfügen. Über diese Angabe wird WordPress das gewünschte Temp-Verzeichnis mitgegeben. Leider ist es mir bisher nicht gelungen die korrekte Angabe für ein selbstgewähltes Verzeichnis zu finden, vielleicht hat ja jemand eine Idee hierfür.
Ich hoffe dies hilft dem ein oder anderen die Update-Funktion in WordPress in Betrieb zu nehmen. Falls es noch fragen oder anregungen gibt könnt ihr diese gern in den Kommentaren hinterlassen.
EDIT:
Hier eine neue und bessere Lösung.












define('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp');Gruß Thorsten
Ich habe die Angabe define(‘WP_TEMP_DIR’, ABSPATH . ‘tmp’); verwendet. Dennoch kann der Befehl ftp_rawlist nicht ausgeführt werden, da er offenbar immer noch auf /tmp zugreifen will
. Habe auch Zeile 451 (das war die einzige in der ich den genannten Code finden konnte)
if ( getmyuid() == fileowner($temp_file) )durch//if ( posix_getuid() == fileowner($temp_fle) )ersetzt – keine Änderung. Die Fehlermeldung ist:
Warning: ftp_rawlist() [function.ftp-rawlist]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/web136/:/usr/bin/) in /var/www/web136/html/wp/wp-admin/includes/class-wp-filesystem-ftpext.php on line 197Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files directory. in /var/www/web136/html/wp/wp-admin/includes/class-wp-filesystem-ftpext.php on line 197
WordPress-Pluginverzeichnis konnte nicht gefunden werden.
Die Installation ging schief
So, in 2.6.2 ist es in file.php die Zeile 451 und es muss
if ( posix_getuid() == fileowner($temp_file) )ohne “{” heißen.
BTW: Vielen Dank, jetzt funktioniert es auch hier wunderprächtig!
Danke für den Tip. Endlich konnte ich Akismet auch mal automatisch aktualisieren
Ein riesengroßes Dankeschön!
Ich habe auch 3 Tage damit gekämpft, bis ich auf diesen schönen Beitrag stieß…
Hallo Aurora,
ich krieg’s auch nicht hin. Ich hab bei WP 2.6.3 den genannten Code ersetzt, in Zeile 451, mit und ohne die eine Klammer (oder müssen beide weg?). In der wp-config hab ich auch den einen und den anderen Code eingesetzt und bekomme auch sowas hier:
Warning: ftp_rawlist() [function.ftp-rawlist]: Unable to create temporary file. Check permissions in temporary files directory. in /is/htdocs/xxxxxxxxxxxxxxx/www/text-deluxe.de/wp-admin/includes/class-wp-filesystem-ftpext.php on line 192
Unable to locate WordPress Plugin directory.
Installation Failed
Weiß dazu vielleicht jemand einen Rat? Ich wäre sehr sehr dankbar, denn das Feature finde ich so toll, bei anderen Hostern klappt’s reibungslos, bei Hosteurope irgendwie nicht.
Vielen lieben Dank im Voraus, falls jemandem dazu etwas einfallen sollte.
Tina
Ah, ich hab’s nochmal probiert, jetzt geht’s auch hier. Allerdings scheint WordPress alte Plugins nicht entfernen zu können – gibt es dazu noch einen Tipp?
Danke sehr!
@textdeluxe
Bei “alten” Plugins mußt du alle Dateien und Ordner per FTP mit den Rechten 777 versehen. Danach sollte es klappen.
Ich habe oben mal einen Link zu einer neuen und besseren Variante der Problemlösung ergänzt.