Owncloud - File is locked - Datei-Sperre entfernen
Inhaltsverzeichnis
Manuelles Zurücksetzen des Sperrstatus
Fehler beim Löschen von Dateien oder Verzeichnissen aus Owncloud
Neulich habe ich versucht, eine Datei von meiner Owncloud zu löschen. Zunächst versuchte ich es im Client-Programm auf meinem Rechner. Lokal ließ sich die Datei löschen, im Synchronisationsprotokoll und in den Server-Aktivitäten des Client-Fensters wurde mir das auch bestätigt. Aber als ich mich routinemäßig ins Web-Interface einloggte, um Updates vorzunehmen, fiel mir auf, dass die lokal auf dem PC als gelöscht gemeldeten Dateien bzw. Ordner noch mit Inhalten aufgelistet wurden.
Das Löschen im Web-Interface wurde mit einem Fehler am oberen Seitenrand quittiert: Fehler beim Löschen von Dateien.
Im Administrationsbereich von Owncloud fand sich eine solche bzw. ähnliche Fehlermeldung:
Fatal | webdav | Exception: {"Message":"HTTP\/1.1 503 System in maintenance mode.","Exception":"Sabre\\DAV\\Exception\\ServiceUnavailable","Code":0,"Trace":"#0 [internal function]: OCA\\DAV\\Connector\\Sabre\\MaintenancePlugin->checkMaintenanceMode(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#1 \/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/3rdparty\/sabre\/event\/lib\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#2 \/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(446): Sabre\\Event\\EventEmitter->emit('beforeMethod', Array)\n#3 \/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(248): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#4 \/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/apps\/dav\/appinfo\/v1\/webdav.php(57): Sabre\\DAV\\Server->exec()\n#5 \/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/remote.php(164): require_once('\/hp\/bs\/aa\/iu\/ww...')\n#6 {main}","File":"\/hp\/bs\/aa\/iu\/www\/domain\/owncloud\/apps\/dav\/lib\/Connector\/Sabre\/MaintenancePlugin.php","Line":84,"User":"AUser"} | 2017-02-14T14:21:03+00:00 |
Der Fehler weist auf eine Datei-Sperre hin. Diese kann behoben werden, indem man sich auf der Datenbank einlogged und in der Tabelle oc_file_locks alle Einträge löscht.
Dazu muss Owncloud zunächst in den Wartungsmodus gebracht werden.
Owncloud in den Wartungsmodus versetzen
Um Owncloud in den Wartungsmodus zu bringen loggen wir uns per FTP auf unseren Webspace ein und editieren die Datei config.php im Verzeichnis /config der Owncloud-Installation. Zunächst suchen wir im Quelltext nach einer Zeile mit dem Inhalt
'maintenance' => false,
In meiner Installation war diese Zeile nicht zu finden. Ich habe sie daher als vorletzte Anweisung eingefügt, den Wert false
auf true
gesetzt und die Datei anschließend auf dem Webspace gespeichert.
Owncloud zeigt nun auf der Login-Seite einen entsprechenden Wartungshinweis an. Auch der Client auf dem Rechner ist nun inaktiv.
Im nächsten Schritt löschen wir alle Einträge aus der Tabelle oc_file_locks der Owncloud-Datenbank.
Einträge aus der Datenbank löschen
Die Datenbank erreichen wir über das Web-Interface von PhpMyAdmin. Dieses Tool wird meist von den Webhostern mit angeboten, um Datenbanken über das Internet administrieren zu können.
Nach dem Login auf der Datenbank können wir im SQL-Eingabe-Bereich direkt den Befehl zum Löschen des Tabelleninhaltes eingeben und ausführen lassen.
DELETE FROM oc_file_locks WHERE 1
Das war es auch schon. Wir loggen uns aus der Datenbank aus.
Wartungsmodus ausschalten
Um den Wartungsmodus von Owncloud auszuschalten und die Cloud-Software wieder zu aktivieren loggen wir uns per FTP auf unseren Webspace ein und editieren die Datei config.php im Verzeichnis /config der Owncloud-Installation. Zunächst suchen wir im Quelltext nach einer Zeile mit dem Inhalt
'maintenance' => true,
Der Wert true
in der Anweisungszeile muss auf false
gesetzt und die Datei anschließend auf dem Webspace gespeichert werden.
Danach sollte die reguläre Login-Seite von Owncloud beim Aufrufen des Web-Interfaces zu sehen sein. Auch der Owncloud-Client auf dem Rechner sollte nun wieder aktiviert sein.
Permanente Lösung bei regelmäßigem Auftreten
Manchmal habe ich durch schnell nacheinander ausgeführte Datei-Updates (hochladen einer Datei) den Fehler provozieren können, dass ich nahezu bei jeder Session den Sperrstatus zurücksetzen musste. Das kann nerven...
Sollte das Problem häufiger Auftreten, kann man eine dauerhafte Lösung durch Abschalten der Dateisperre (file locking) herbei führen. Aber Abschalten ist eigentlich keine echte Lösung, nur das Umgehen von Ursachen.
Owncloud im Hosting-Paket
Wir können die Dateisperrung deaktivieren, indem wir die Konfigurationsdatei im Verzeichnis /config/config.php
bearbeiten:
'filelocking.enabled' => false,