Gruniversal Blog

Technisches und Persönliches

PHP Mails lokal loggen

Für ein PHP Projekt wollte ich kürzlich prüfen, welche Mails die Anwendung verschickt. Es ging nur um ein kleines Detail und daher wollte ich keine aufwändige Mailkonfiguration aufbauen, sondern einfach nur den Quellcode der Mails in eine Logdatei schreiben.

Nachdem ich mich zunächst bei sendmail umgesehen habe, ohne eine passenden Parameter zu finden, der die Mails nur in die Queue packt ohne sie aber zu versenden, bin ich dann in einem Blog auf eine einfache Lösung gestoßen.

Dazu hab ich einfach folgendes Script erstellt und ausführbar gemacht:

#!/usr/bin/php
<?php
  $logfile = '/var/log/phpmail.log';
  $log_output = "****" . date('Y-m-d H:i:s') . "****\n";
  $handle = fopen('php://stdin', 'r');
  $count = 0;
  while(!feof($handle)) {
    $count++;
    $buffer = trim(fgets($handle));
    if ($count <= 12) # Output header information
      $log_output .= $count . ": " . $buffer . "\n";
    else # Output body
      $log_output .= $buffer . "\n";
  }
  file_put_contents($logfile, $log_output, FILE_APPEND);
?>

Damit es beim “Senden” einer Mail ausgeführt wird, reicht eine einfache Anpassung in der php.ini des Apache:

$ sudo vim /etc/php/7.2/apache2/php.ini
; send mail to /var/log/phpmail.log
sendmail_path = /path/to/phpmail

Das wars schon. Mehr ist nicht notwendig und ab sofort kann man den Mailinhalt leicht aus der phpmail.log herauslesen, z.B. mit tail:

$ tail -f /var/log/phpmail.log

Mein Problem war in 10 Minuten gelöst. Danke Internet! :)

Matomo Consent vs. Opt-Out

Ich engagiere mich im Moment ehrenamtlich für die Webseite eines Vereins und stand in diesem Zusammenhang vor der Aufgabe das Webanalysetool Matomo Analytics datenschutzkonform in die bestehende WordPress Instanz einzufügen.

Über Matomo soll das Verhalten der Nutzer auf Basis anonymisierter Daten analysiert werden um die Verwendung der Seite besser zu verstehen und dann entsprechend Ansatzpunkte für eine Verbesserung der Website zu gewinnen.

Matomo bietet grundsätzlich zwei verschiedene Wege um abhängig vom Einverständnis des Nutzers das Tracking zu steuern: Opt-Out und Consent.

Doch was ist der Unterschied und welcher Weg ist der bessere?

Bash Script: Export Sony

Im Oktober 2016 habe ich mir einen neuen MP3 Player von Sony gekauft. Konkret den Sony Walkman NWZ-15A. Recht bald darauf fiel mir dann auf, dass die Titel innerhalb eines Albums nicht in der korrekten Reihenfolge abgespielt werden. Außerdem hat mich gestört, dass bei den meisten Titeln keine Album-Cover angezeigt werden.

Das war zu dem Zeitpunkt ärgerlich, aber auch eine nette persönliche Herausforderung. Zur Lösung habe ich mich für ein Bash-Script entschieden und in mehreren Phasen dann die Probleme lösen können. Die letzten größeren Anpassungen erfolgten dann August 2018, wo ich vor allem eine Funktion ergänzte um bestehende Dateien zu überspringen und das Cover-Problem endlich vollständig lösen konnte.

Und heute? Nachdem ich meinen Player mal wieder damit aktualisiert habe, dachte ich, es wäre vielleicht ne nette Idee den Code öffentlich zu teilen. Also habe ich noch ein wenig aufgeräumt und ihn dann im GitLab zur Verfügung gestellt. Einfach so :)

Lokales WordPress Staging

Normalerweise sind die WordPress Core- und Plugin-Updates relativ stabil und daher kann man ohne große Sorge sein, dass bei einem der zahlreichen Updates alles gut gehen wird.

Natürlich ist es hilfreich die Update-Notes vorab zu lesen um den Umfang des Updates abzuschätzen und zu wissen, was man genauer prüfen sollte. Wenn es dann wirklich schief geht, hat man normalerweise durch Backups vorgesorgt.

Bei kritischen Updates erscheint dieser Weg jedoch unbefriedigend, weil man keine Möglichkeit hat vorab alles in Ruhe zu testen. Hier hilft nur der Weg über ein Staging-System. Aber wenn der primäre Update-Prozess über das Live-System geht, wie kann man dann ein solches Staging-System realisieren?

Dazu habe ich mir einen nützlichen Workflow bereitgestellt.

Mein Entwicklungsworkflow

An verschiedenen Stellen habe ich schon zu meiner lokalen Entwicklungsumgebung geschrieben, aber vielleicht ist es ganz nützlich, wenn ich das nochmal etwas erläutere.

Normalerweise entwickle ich im Moment für PHP, manchmal auch für die Bash-Shell. Üblicherweise bin ich auch der einzige Entwickler bei meinen Projekten, daher bin ich komplett frei in meinen Rahmenbedingungen.

Vieles ist sicherlich trotzdem mehr oder weniger Standard, aber hin und wieder kann man sich ja doch etwas abschauen und besonders bei der Versionskontrolle und dem Deployment arbeite ich jetzt anders als früher.

Samsung Xpress C480W unter Linux Mint 19

In den beiden letzten Beiträgen habe ich gezeigt, wie überwiegend reibungslos mein Update auf Linux Mint 19 sowie die Nacharbeiten hierzu waren.

Damit war ich zufrieden, ahnte aber noch nicht, dass sich hieraus noch eine echte “Linux Story” entwickeln würde. Damit meine ich eine Geschichte, bei der man auf ein technisches Problem stößt – meist im Zusammenhang mit Hardware – und bis zum Ende nicht weiß, ob man es lösen kann oder sich neue Hardware besorgen muss.

Konkret war mir beim Check der verschiedenen Workflows, die ich so gelegentlich nutze, aufgefallen, dass mein Multifunktionsdrucker nicht mehr als Scanner erkannt wurde. Daraus entspann sich dann ein wechselhafter und lehrreicher Abend.

Linux Mint 19 Update – Nachträge und neue Baustellen

Zuletzt habe ich beschrieben, wie ich mit MintUpgrade von Sylvia zu Tara gewechselt bin. Dabei sind einige Baustellen übrig geblieben, um die ich mich nun im Nachgang kümmern muss:

  • Boot-Menü von grub wird nicht angezeigt
  • beim Einsatz des Display-Managers lightdm treten Fehler auf
  • volles Root-Verzeichnis durch viele Paketdownloads
  • Applets der Taskleiste funktionieren teilweise nicht
  • entfernte Paketquellen wieder einfügen
  • fehlende Pakete nachinstallieren um GitKraken wieder lauffähig zu machen
  • den Apache wieder korrekt konfigurieren
  • die grafischen Probleme innerhalb von Clementine beheben
  • das tägliche Boot-Backup wieder aktivieren

Das sind einige ToDos, besser ich lege gleich mal los.

Linux Mint 19 Update

Da ich durch das Corona-Virus im Moment mehr oder weniger an meine Wohnung gefesselt bin, habe ich mir vorgenommen, das schon länger angedachte Linux Mint Update von 18.3. (Sylvia) zu 19 (Tara) durchzuführen.

Mein Linux Mint lief zwar seit Jahren stabil durch und Sylvia wird auch noch bis 2021 unterstützt, aber so manches moderne Feature gibt es auf diesem Stack dann doch nicht mehr und irgendwann muss man sowieso updaten.

Also hab ich mir verschiedene Anleitungen hierzu durchgesehen und dann entschieden es einfach zu versuchen. Hier könnt ihr lesen, wie es mir hierbei erging.

WordPress Plugin: Enlighter

Im meinem letzten Beitrag habe ich ein paar Basis-Plugins für WordPress vorgestellt. Diesmal geht es um ein Plugin, welches ich einsetze um die Quellcodes hier im Blog optisch ansprechend darzustellen.

Nach kurzen Recherche hab ich mich hierbei für das WordPress Plugin Enlighter entschieden, da es eine elegante Integration in den neuen Gutenberg Editor bietet und eine gute Unterstützung für meine bevorzugten Code-Sprachen mitbringt.

Mein WordPress Basis Setup

In meinem Beitrag zur Migration von WordPress habe ich beschrieben, wie mein Reiseblog auf meine Domain umgezogen ist und wie ich WordPress nach meinen Vorstellungen konfiguriert habe.

Für meinen persönlichen IT-Blog – den du gerade liest – bin ich etwas anders vorgegangen und habe das WordPress komplett frisch aufgesetzt. In diesem Artikel beschreibe ich, was ich mir dabei gedacht habe.

Seite 2 von 3

Präsentiert von WordPress & Theme erstellt von Anders Norén