Gruniversal Blog

Technisches und Persönliches

Schlagwort: #Linux

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! :)

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 :)

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.

Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

Automatischer FTP-Download mit make und wget

Als ein Argument meiner WordPress.com Migration habe ich aufgeführt, dass ich gern die Sachen “parat” habe, was für meine Blogs bedeutet, dass ich den Quellcode und die Uploads gern als lokale Kopie vorliegen habe. Zum einen ist das nützlich für lokale Entwicklungen und zum anderen dient es dem Backup.

Natürlich kann ich mich dafür händisch z.B. per FileZilla auf den FTP verbinden, aber da es nur ein gelegentlicher Prozess ist, besteht die Gefahr dabei etwas vergessen und so habe ich mich nach einer Lösung mit etwas mehr Automatisierung umgeschaut, die ich einmal einrichte und dann bei Bedarf einfach ausführen kann.

Außerdem wollte ich schon länger mal etwas mit Makefiles machen. Da bot es sich an das gleich mal zu verbinden.

Weiterlesen

Mehrfaches Umbenennen unter Linux mit mmv

Im Rahmen der Migration eines WordPress.com Blogs auf meinen eigenen Webserver kam ich kürzlich an den Punkt, viele Bilder auf einmal umbenennen zu wollen.

Unter MS-DOS gab es dafür den guten alten Befehl rename der zum Beispiel solche Operationen ermöglichte:

C:\> RENAME *.TXT *_OLD.TXT

Dabei matcht MS-DOS den Platzhalter im ersten Ausdruck mit den vorhandenen Dateien und benennt sie dann gemäß dem zweiten Ausdruck um. Alle Textdateien erhalten also im Namen die Erweiterung _OLD. Das klappt natürlich auch entsprechend in umgekehrter Richtung:

C:\> RENAME *_OLD.TXT *.TXT

Nun sind meine MS-DOS Zeiten lange vorbei und ich brauchte etwas Vergleichbares unter Linux um durch WordPress erzeugte Bilder im Format *-scaled.jpg zu *.jpg umzubenennen.

Weiterlesen

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