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.

Ändern der Zeitzone / Timezone bei Windows Servern

Wenn man bei Windows Servern nachträglich die Zeitzone ändern möchte, kommt man auf dem offensichtlichen Weg nicht weiter.

Wenn man als Administrator in der Systemsteuerung / Control Panel über Change Timezone die Zeitzone ändern möchte kommt eine Fehlermeldung “Unable to Continue”.

Die Lösung des Problems ist relativ einfach.

Man öffnet als Administrator eine Powershell und ruft das Systemsteuerungselement Datum und Zeit / Date and Time direkt über die Admin-Powershell auf. Dazu gibt man auf der Shell “timedate.cpl” ein.

Jetzt lässt sich die Zeitzone problemlos über “Change Timezone” ändern.

Ein HP LaserJet Netzwerkdrucker erscheint nach erfolgreicher Installation als “offline”

Nachdem ein HP LaserJet Netzwerkdrucker anhand seiner IP-Adresse in Windows erfolgreich installiert wurde, erscheint er als “offline”. Ein Drucken ist nicht möglich.

Grund für dieses Problem war, dass Windows den Druckerzustand anhand von SNMP versucht zu ermitteln. Hier war bei den Drucker Anschlusseinstellungen beim SNMP-Communityname “SET” eingetragen. Diese Communityname war aber nicht mit dem SNMP-Communityname des Druckers identisch. Deshalb konnte Windows den Druckerstatus nicht per SNMP ermitteln und zeigte den Drucker “offline” an.

Als der SNMP-Communityname auf den Standardwert “public” geändert wurde, konnte Windows den Druckerstatus ermitteln und schaltete den Drucker sofort auf “online”.

Es wäre auch möglich gewesen, die SNMP Statusabfrage komplett zu deaktivieren indem die entsprechende Checkbox deaktiviert wird.