Fehler: “Oops, an error occurred!” nach TYPO3 12.4 und News Extension 11.3.0 Update in Bezug auf den Fluid Viewhelper “includeFile”

Nach dem Update einer TYPO3-Website auf Version 12.4 und einem gleichzeitigen Update der News Extension auf Version 11.3.0 kann es vorkommen, dass bestehende News-Artikel weder in der Übersichtsliste noch in den Detailansichten angezeigt werden. Stattdessen erscheint die Fehlermeldung “Oops, an error occurred! Code: 202401072011058d9760ff”. AdHoc konnte ich keine Fehlerursache erkennen auch waren bei einer Google Suche keine Lösungen für das Problem verfügbar.

Ursache des Problems

Die Ursache für diesen speziellen Fehler liegt in einer Änderung der ViewHelpers in der News Extension. In der Logdatei wird ein Fehler im Zusammenhang mit dem ViewHelper “<n:includeFile>” angezeigt.
Error: The ViewHelper "<n:includeFile>" could not be resolved.

Dieser ViewHelper wurde in den früheren Versionen der News Extension verwendet, ist aber in der Version 11.3.0 nicht mehr vorhanden.

In der Dokumentation der News Extension Version 10 wird der IncludeFile ViewHelper noch erwähnt, jedoch fehlt er in der Dokumentation der Version 11. Diese Änderung wurde offenbar nicht breit kommuniziert, da ich online keine Informationen darüber finden konnten.

Lösung des Problems

Die Lösung für dieses Problem wurde im offiziellen TYPO3 Slack-Kanal gefunden. Ein anderer Benutzer hatte das gleiche Problem geäußert, und der Entwickler der News Extension, Georg Ringer, gab einen entscheidenden Hinweis.

In den originalen Fluid Templates ab Version 11 der News Extension ist ein neues, funktionierendes Code-Fragment zu finden. Anstelle von:

<f:if condition="{settings.cssFile}">
	<n:includeFile path="{settings.cssFile}" />
</f:if> 

sollte jetzt folgender Code verwendet werden:

<f:if condition="{settings.cssFile}">
	<f:asset.css identifier="ext-news" href="{settings.cssFile}" />
</f:if>

Anscheinend hat der Autor der News Extension seinen eigenen, extension-spezifischen ViewHelper zugunsten eines standardmäßigen ViewHelpers mit identischer Funktion aufgegeben und aus der Extension entfernt.

Bei mir half eine Änderung des Syntax in den News Fluid Templates Dateien Layouts/General.html und Layout/Detail.html aus, damit die News Extension in der neuen TYPO3 Instanz wieder funktionierte.

Behebung der TYPO3 PHP-Warnung – PHP Warning: Undefined array key “tx_news_pi1” – nach dem Update auf PHP 8

Wenn Sie kürzlich Ihr TYPO3-System auf PHP 8 aktualisiert haben, könnten Sie auf eine hartnäckige PHP-Warnung im TYPO3 Systemlog gestoßen sein, die sich auf den Schlüssel “tx_news_pi1” bezieht.

Nach dem Update auf PHP 8 bemerkte ich hunderte von Warnungen im TYPO3 System Log, die alle auf die gleiche Typoscript Condition hinwiesen:

[request.getQueryParams()['tx_news_pi1']['news'] > 0].

Nach einiger Recherche stellte sich heraus, dass die Syntax für Conditions in TypoScript geändert wurde.

Die Lösung liegt in der Anpassung der Typoscript Condition. Anstelle der alten Syntax verwendet man nun die neue Syntax:
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0].

Diese Änderung beseitigt die PHP-Warnungen.

In der TYPO3-Dokumentation findet man weitere Informationen zur Implementierung der Symfony Expression Language für TypoScript Conditions, welche die Änderungen in der Syntax erklärt. Der folgende Link führt Sie zur entsprechenden Dokumentation: TYPO3-Dokumentation.

Führende Nullen in Dateinamen unter Linux hinzufügen

Wenn Sie viele Dateien haben, die durchnummeriert sind, aber ohne führende Nullen, kann die Sortierung manchmal durcheinander geraten. Ein typisches Beispiel könnte eine Sammlung von Bilddateien sein, die als img_1.jpg, img_2.jpg, img_100.jpg usw. nummeriert sind. In diesem Fall wird img_100.jpg vor img_2.jpg sortiert, da die Sortierung als Zeichenkette und nicht numerisch erfolgt.

Dieses Problem lässt sich lösen, indem man ein einfaches Bash-Skript verwendet, das durch alle Dateien geht und diejenigen umbenennt, die weniger als eine bestimmte Anzahl von Ziffern in ihrem Namen haben, in unserem Fall drei. Hier ist, wie Sie das tun können:

for file in img_*.jpg; do
    # Extrahiere die Nummer aus dem Dateinamen
    num=$(echo $file | grep -o -E '[0-9]+')

    # Überprüfe, ob die Nummer weniger als 3 Stellen hat
    if [ ${#num} -lt 3 ]; then
        # Füge führende Nullen hinzu, um die Länge auf 3 zu bringen
        new_num=$(printf "%03d" $num)

        # Generiere den neuen Dateinamen
        new_file="img_${new_num}.jpg"

        # Umbenennen der Datei
        mv $file $new_file
    fi
done

Dieses Skript extrahiert den numerischen Teil jedes Dateinamens, prüft seine Länge und fügt gegebenenfalls führende Nullen hinzu, um die Länge auf drei Stellen zu bringen. Es ignoriert Dateien, die bereits eine dreistellige Nummer haben.

Bitte beachten Sie, dass das Skript davon ausgeht, dass alle Ihre Dateien im Format img_N.jpg vorliegen, wobei N eine Zahl ohne führende Nullen ist. Wenn Ihr Dateiformat abweicht, müssen Sie das Skript entsprechend anpassen.

Zudem sollten Sie beachten, dass dieses Skript keine Sicherheitsmaßnahmen implementiert, um sicherzustellen, dass keine Dateien überschrieben werden. Stellen Sie daher sicher, dass Sie eine Sicherungskopie Ihrer Dateien haben, bevor Sie das Skript ausführen.

SSL-Zertifikatstauschs beim Windows Admin Center (WAC)

Im Gegensatz zu anderen Anwendungen bietet das Windows Admin Center keinen direkten Eintrag im Startmenü an, um einen Konfigurationsdialog zum Zertifikatstausch aufzurufen. Zudem wird es nicht über die IIS-Bindungen verwaltet, was die Sache noch komplizierter macht.

Beginnen wir damit, wie man zum Konfigurationsdialog gelangt. Dieser befindet sich in den Einstellungen unter “Apps and Features” oder “Programme hinzufügen und entfernen”. Hier muss man das Windows Admin Center auswählen und auf “Modify” klicken, um den Setup-Dialog zu starten. Im Setup-Dialog muss man dann erneut auf “Ändern” klicken.

In dem folgenden Dialogfenster kann man den Thumbprint des neuen Zertifikats eingeben. Wichtig ist, dass dieses Zertifikat zuvor in den Zertifikatsstore von Windows importiert wurde.

Nach Abschluss des Installationsassistenten des Windows Admin Centers wird das neue Zertifikat konfiguriert.

Insgesamt handelt es sich hierbei um einen eher ungewöhnlichen und komplizierten Prozess.

Es wäre wesentlich praktischer, wenn es einen direkten Eintrag im Startmenü gäbe, der den Konfigurationsassistenten aufruft. Des Weiteren würde eine Auswahl der möglichen Zertifikate anstatt der Eingabe des Zertifikats-Thumbprints den Prozess erleichtern und benutzerfreundlicher gestalten.

Ändern der Zeitzone auf einem Debian System

Um die Zeitzone auf einem Debian System zu ändern, können Sie die folgenden Schritte ausführen:

  1. Öffnen Sie das Terminal oder eine SSH-Verbindung zum Server.
  2. Überprüfen Sie die aktuelle Zeitzone des Systems mit dem Befehl timedatectl.
  3. Geben Sie den Befehl timedatectl set-timezone gefolgt von der Bezeichnung der neuen Zeitzone ein, um die Zeitzone zu ändern.
  4. Ersetzen Sie “Europe/Berlin” durch den Namen der gewünschten Zeitzone. Eine Liste aller verfügbaren Zeitzone finden Sie unter /usr/share/zoneinfo/.
  5. Überprüfen Sie erneut die Zeitzone mit dem Befehl “timedatectl", um sicherzustellen, dass die Änderung erfolgreich war.

Stellen Sie sicher, dass Sie über ausreichende Berechtigungen auf dem System verfügen, um diese Änderungen vorzunehmen

Identifizieren defekter Disks in einem Storage Spaces Direct Cluster (S2D) mit PowerShell

Das folgende PowerShell-Skript ermittelt defekte Disks in einem Storage Spaces Direct Cluster und zeigt den Namen des Clusterknotens, in dem die Disk verbaut ist:

$errordisks=@()

foreach($ed in Get-PhysicalDisk |? Operationalstatus -ne 'OK'|Sort-Object FriendlyName)
{
    $Nodename=($ed|Get-StorageScaleUnit).friendlyname

    $cobject = [PSCustomObject]@{
        FriendlyName = $ed.FriendlyName
        SerialNumber = $ed.SerialNumber
        MediaType=$ed.MediaType
        OperationalStatus=$ed.OperationalStatus
        Size=$ed.Size/1GB
        HealthStatus=$ed.HealthStatus
        Nodename=$Nodename
    }
    $errordisks+=$cobject
}

$errordisks|ft

Das Skript erstellt ein Array namens $errordisks, das die Informationen zu defekten Disks enthält. Es durchläuft alle physischen Disks, die einen vom Status “OK” abweichenden OperationalStatus haben. Für jede gefundene Disk wird der zugehörige Clusterknotenname ermittelt und ein benutzerdefiniertes PowerShell-Objekt mit den relevanten Informationen erstellt. Schließlich wird das Array $errordisks ausgegeben, und die Informationen werden im Format einer Tabelle angezeigt.

Beispiel: Anzeige einer defekten SSD in einem Storage Space Direct Cluster

Mit einer kleinen Änderung des Scripts lassen sich alle Disks, unabhängig von ihrem Status, in einen Storage Space Direkt Cluster, zugeordnet zu dem jeweiligen Clusternode, anzeigen.

$S2Ddisks=@()

foreach($ed in Get-PhysicalDisk)
{
$Nodename=($ed|Get-StorageScaleUnit).friendlyname

 if($nodename)
 { 
 
  $cobject = [PSCustomObject]@{
                    FriendlyName = $ed.FriendlyName
                    SerialNumber = $ed.SerialNumber
                    MediaType=$ed.MediaType
                    OperationalStatus=$ed.OperationalStatus
                    Size=$ed.Size/1GB
                    HealthStatus=$ed.HealthStatus
                    Nodename=$Nodename
                    }


  $S2Ddisks+=$cobject
  }

}

$S2Ddisks|Sort-Object  Nodename,FriendlyName|ft
Anzeigen aller Disks in einem Storage Space Direct Cluster, mit dem Clusterknoten in dem die Disk verbaut ist.

Dateien älter als ein bestimmtes Datum unter Linux löschen

Verwenden Sie den folgenden Befehl, um Dateien zu finden und zu löschen, die älter sind als ein bestimmtes Datum:

find /pfad/zum/verzeichnis -type f -not -newermt 'YYYY-MM-DD' -print0 | xargs -0 rm

Bevor Sie den Befehl ausführen, empfiehlt es sich, die gefundenen Dateien ohne den | xargs -0 rm-Teil zu überprüfen, dass wirklich nur die gewünschten Daten gelöscht werden.

Schneller Zugriff auf den Zertifikatspeicher des lokalen Computers unter Windows

Obwohl es mehrere Möglichkeiten gibt, auf den Zertifikatspeicher (Certificate Store) von Windows zuzugreifen, möchte ich in diesem Blogbeitrag eine schnelle und effiziente Methode vorstellen und die ich gerne mit euch teilen möchte.

Die gängige Methode, um auf den Zertifikatspeicher des lokalen Computers zuzugreifen, besteht darin, die Microsoft Management Console (MMC) zu verwenden, das Zertifikat-Snap-In hinzuzufügen und dann den lokalen Computer als Ziel auszuwählen. Dieser Prozess kann jedoch zeitaufwändig sein, insbesondere wenn man regelmäßig auf den Zertifikatspeicher zugreifen muss.

Glücklicherweise gibt es eine einfachere und schnellere Methode, um direkt auf den Zertifikatspeicher des lokalen Computers zuzugreifen. Anstatt die MMC zu öffnen und manuell das Zertifikat-Snap-In hinzuzufügen, kann man einfach den Befehl certlm.msc verwenden.

Um den Zertifikatspeicher des lokalen Computers direkt aufzurufen, befolgen Sie die folgenden Schritte:

  1. Drücken Sie die Windows-Taste + R, um das “Ausführen”-Dialogfeld zu öffnen.
  2. Geben Sie certlm.msc ein und drücken Sie Enter.

Der Zertifikatspeicher des lokalen Computers wird nun geöffnet, und Sie können die Zertifikate einsehen und verwalten.

“Windows Certifiacte Store Local Machine” mit dem Befehl certlm.msc direkt aufrufen.
Windows Zertifikatspeicher lokaler Computer

Ändern des Speicherorts der Joplin Profile

Joplin ist eine beliebte Open-Source-Alternative zu OneNote und wird von vielen Nutzern aufgrund seiner umfangreichen Funktionen und der plattformübergreifenden Verfügbarkeit geschätzt. Standardmäßig speichert Joplin seine Profile im Benutzerprofil des Benutzers unter C:\Users\BENUTZERNAME\.config\joplin-desktop. Wenn Sie jedoch den Speicherort der Joplin Profile ändern möchten, um sie beispielsweise auf einem anderen Laufwerk zu speichern, gibt es keine offiziell unterstützte Möglichkeit.

Wenn man in den Joplin Foren sucht, findet man doch eine Möglichkeit, den Speicherort der Joplin Profile durch die Verwendung eines Parameters bei der Ausführung der Joplin-Datei zu ändern. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie den Speicherort der Joplin Profile ändern können:

  1. Schließen Sie Joplin vollständig und beenden Sie gegebenenfalls im Task-Manager noch laufende Joplin-Prozesse.
  2. Kopieren Sie den gesamten Inhalt des Ordners “joplin-desktop” an den neuen Speicherort, an dem Sie Ihre Joplin Profile speichern möchten.
  3. Öffnen Sie den Startmenüeintrag oder die Verknüpfung von Joplin in der Taskleiste mit einem Rechtsklick und wählen Sie “Eigenschaften”.
  4. Fügen Sie in das Feld “Ziel” am Ende der ausführbaren Datei (z.B. “C:\Program Files\Joplin\Joplin.exe”) den Parameter “–profile” gefolgt vom Pfad zum neuen Speicherort Ihrer Joplin Profile ein. Der gesamte Pfad sollte in Anführungszeichen gesetzt werden, um sicherzustellen, dass eventuelle Leerzeichen im Pfad korrekt interpretiert werden. Zum Beispiel: "C:\Program Files\Joplin\Joplin.exe" --profile "D:\joplin-desktop"
  5. Klicken Sie auf “Übernehmen” und dann auf “OK”, um die Änderungen zu speichern.
  6. Starten Sie Joplin und überprüfen Sie, ob Ihre Joplin Profile nun im neuen Speicherort gespeichert werden.
Beenden aller Joplin Prozesse
Anpassen der Joplin Links mit der Angabe des Profilordners

Es ist wichtig zu beachten, dass diese Methode nicht von den Entwicklern von Joplin offiziell unterstützt wird und daher möglicherweise nicht vollständig getestet oder stabil ist. Es wird empfohlen, vor der Durchführung dieser Änderungen eine Sicherungskopie Ihrer Joplin Profile zu erstellen, um Datenverluste zu vermeiden.

Insgesamt ist das Ändern des Speicherorts der Joplin Profile mit etwas technischem Know-how und einigen Schritten durchführbar.