Zum ersten Mal ist mir der Fehler in der Version 13 aufgetreten. Da war die Lösung die Umbenennung des Ordners „files_accesscontrol“. Mit dem Aufruf der Nextcloud-Seite im Browser wurden dann die installieren Apps aktualisiert und ein Einloggen auf der Wolke war wieder möglich.
In der 29er Version scheint es diesen Ordner nicht mehr zu geben. Aber auch dafür gibt es eine Lösung.
Einloggen per SSH auf das Verzeichnung und den Befehl
php83 occ upgrade
ausführen.
Die Apps werden in der DB registriert und der Aufruf von Nextcloud ist wieder möglich.
Stand 02.11.2024: Aufruf der aktuellen PHP-Version angepasst, kleine Formatkorrekturen vorgenommen.
Nextcloud lässt sich bei Allinkl.com gut hosten. Allerdings sind nach der Installation und nach einem Update ein paar Arbeiten nötig.
PHP-Speicherlimit erhöhen
Nextcloud benötigt mindestens 512 MB, die Standardgrenze liegt bei allinkl.com bei 128 MB. Mit der folgenden Zeile in der Datei .user.ini im Root-Verzeichnis kann die Speichergrenze erhöht werden. Bitte diese Änderung moderat vornehmen, da dies den gesamte SharedServer beeinflusst und es zu Rückmeldungen vom Provider kommen kann.
Ich habe für mich einen Wert von 768 MB als gut empfunden.
memory_limit=768M
Anmerkung: Mit dem Hub 8 (ab Version 29) wird der PHP-Speicher nicht mehr angemerkt. Ob diese Option noch benötigt wird, wird sich zeigen.
PHP Memory Cache konfigurieren
Der Memory-Cache ist bei all-inkl.com leider erst ab einem Managed-Server konfigurierbar.
PHP OPcache-Modul konfigurieren
Hier kann ein kostenloser Serverwechsel über den Support nötig sein.
Fehlende Datenbank-Indizes erstellen
Es wenn Datenbank-Indices fehlen, muss man sich über das Terminal per ssh am Webspace anmelden. Unter Linux ist folgendes möglich:
Als Kennwort dann das Passwort des Haupt-FTP-Nutzers nehmen.
Per CD in das Installationsverzeichnis navigieren und folgenden Befehl ausführen. Je nach eingesetzter PHP-Version ändert sich der Befehl, z.B. php74, php82, etc.:
php83 occ db:add-missing-indices
In dem Zuge können auch Variablenfehler beseitigt werden:
php83 occ db:convert-filecache-bigint
Und wenn wir schon mal hier sind, können wir auch die Mimetype-Zuordnungen korrigieren:
php83 occ maintenance:repair --include-expensive
Wartungszeitfenster konfigurieren
Der Assistent schlägt die Einrichtung eines Wartungsfensters vor, die die Wartungsarbeiten in einer Nebenzeit ausführt. Das nachfolgende Beispiel zeigt die Einrichtung des Wartungsfenster auf 1 Uhr nachts (UTC). Die nachfolgende Zeile wird in die Datei ‚config/config.php“ eingetragen
'maintenance_window_start' => 1,
Alternativ kann die Einrichtung auch über die ssh-Shell vorgenommen werden:
Öfter mal was neues, die Fehlermeldung lautet genau:
Eine Hintergrundaufgabe, die nach vom Benutzer importierten SSL-Zertifikaten sucht, läuft noch. Bitte später erneut versuchen.
Die vermeintliche Hintergrundaufgabe bricht nicht ab, sie läuft auch nicht. Ein Wert in der Tabelle update oc_appconfig sorgt für einen falschen Status und kann gelöscht werden. Dies lässt über ein SQL-Statement oder durch die direkte Änderung in der Datenbank beheben. In beiden Fällen muss man sich in der Datenbank anmelden. Über den phpmyadmin muss der folgende Eintrag mit einem Klick auf das rote X gelöscht werden:
(Stand: 02.11.2024: Aufruf der aktuellen PHP-Version angepasst, kleine Format- und Textkorrekturen.
Beim Schreiben des Codes meldete mir GIMP immer wieder den Fehler, dass das Plugin abgestürzt sei. Einzige Änderung war Ergänzung eines Kommentars mit einem Umlaut. Sobald der Umlaut ersetzt wurde, funktionierte das Skript wieder.
Die Lösung fand sich bei der Recherche im Netz in einem Artikel aus dem Jahr 2006. Dieser wies darauf hin, dass eine Schriftcodierung erforderlich ist. So sollte im Code die Schriftcodierung hinterlegt sein und mit dem benutzten Editor identisch sein.
Der Editor speichert standardmäßig die Dateien in UTF-8 ab. Die folgende Zeile habe ich in den Code in die 2. Zeile eingefügt, danach waren Sonderzeichen und Umlaute kein Problem mehr.
Zu Beginn widmen wir uns den Variablen. Variablen sind dazu da, verschiedene Arten von Werten aufzunehmen und dynamisch Berechnungen und Funktionen auszuführen. Weitere Vorteile sind, dass Werte von Eingabefeldern übernommen werden können, die Lesbarkeit gesteigert und eine zentrale „Verwaltung“ von Variablen und ihren Werten ermöglicht wird. Es ist halt einfacher, für die Kreiszahl π (Pi) eine Variable zu definieren und zu verwenden, als immer wieder im Code „3.141592653589793238462643“ zu wiederholen.
GIMP beinhaltet zwei Skriptsprachen, mit denen sich Abläufe automatisieren lassen. Zum einen ist es das mittlerweile in die Jahre gekommene Script-Fu, was aufgrund der Synatx auch als Klammersprache bezeichnet wird und auf der Programmiersprache Scheme aufbaut, und das jüngere Python-Fu, was an dem gleichnamigen Pythonangelehnt ist.
Leider finde ich im Internet keine guten, deutschsprachigen Dokumentationen zu Python-Fu, so dass ich hier in dem Notizblog meine Erkenntnisse hinterlege.
Dieses kleine Script liest die Zellen in einer Tabellenzeile aus und schreibt sie untereinander in die Spalte A. Dabei muss fest angegeben werden, wie viele Zellen ausgelesen werden sollen.
Sub main()
Dim i As Integer
For i = 1 To 67
Range("A" & 2 + i).Value = Cells(1, i).Value
Next i
End Sub
Im Excel lassen sich über VBA einzelne Zellen oder Bereiche direkt ansprechen und mit Werten befüllen bzw. auslesen. Dazu gibt es die Befehle cells und range. Der Aufbau der Syntax ist allerdings unterschiedlich. Im folgenden Beispiel wird die Zelle B3 des Tabellenblatt „Sheet1“ mit dem Wert „Test“ beschrieben
Im Befehl range erfordert zuerst die Angabe der Spalte und dann der Zeile, während es bei cells genau umgekehrt ist, also erst die Reihe, dann die Spalte.
Nun stellt sich noch die Frage, wozu die Unterschiede:
In einem Script, was Zellen nach einem definierten Schema befüllt, kann, auch der besseren Lesbarkeit wegen, die Zelle oder der Bereich über range angesprochen werden. Sobald allerdings eine Dynamik ins Spiel kommt, z.B. füllen eines Bereichs über das Script, muss cells verwendet werden.
Der nachfolgende Befehl füllt die Zellen C4 bis H7 des Tabellenblatt „Sheet1“ mit dem Wort „Test“
Die Access-Statuszeile kann über folgenden Befehl als Informationsleiste verwendet werden.
Sub Statusnachricht(Nachricht)
Dim Statusnachricht As Variant
Select Case Nachricht
Case Is = "0"
Statusnachricht = SysCmd(acSysCmdClearStatus)
Case Else
Statusnachricht = SysCmd(acSysCmdSetStatus, Nachricht)
End Select
End Sub
Erklärungen zum Script
Zeile 2: Deklaration der Variablen „Statusnachricht“ als Variant
Zeile 4: Filtere die übergebenen Parameter
Zeile 5 + 6: Wenn der Wert „0“ ist, dann lösche die Anzeige
Zeile 7 + 8: ansonsten zeige die Nachricht an
Zeile 9: Schließen die Schleife der Selektion
Der Aufruf der Sub erfolgt nach folgendem Schema:
call Statusnachricht("Zeige diesen Text in der Statuszeile von Access an.")
call Statusnachricht("0") ' Lösche den in der Statuszeile angezeigten Text.
Der nachfolgende VBA-Code löscht ein Excel-Tabellenblatt aus einer Access-Instanz heraus:
Sub deleteTabelle(Tabellenname, xl_book)
For Each Sheet In xl_book.WorkSheets
If Sheet.Name = Tabellenname Then
xl_book.Application.DisplayAlerts = False
xl_book.WorkSheets(Tabellenname).Delete
xl_book.Application.DisplayAlerts = True
End If
Next
End Sub
Erläuterungen zum Code:
Zeile 3: Frage in einer Schleife sämtliche Tabellenblätter ab, ob das übergebene Tabellenblatt vorhanden ist.