Technisches und Persönliches

Schlagwort: #PHP

Mein Twitter Bot für Zufallszitate

Ich hatte schon immer ein Interesse für Zitate und andere Gedanken von wichtigen Persönlichkeiten und spätestens mit meinem Einstieg in die Welt der elektronischen Kommunikation mittels Newsgroups damals, gab es einen wachsenden Pool von Zitaten, der mich über die Jahre hinweg begleitete.

Alles begann damals mit einer Funktion des Newsreaders Blue Wave, den ich nutzte, um mich mit meinem 14.400er Modem in die lokale Newsgroup Irata einzuwählen. Dabei konnte man ein Textfile hinterlegen, aus dem beim Kommentieren eine zufällige Zeile zur Ergänzung der Signatur ausgewählt wurde.

Später übernahm ich die Liste der Zitate dann für ein einfaches JavaScript auf meinen ersten Websites, welches es dort auch noch heute als Zitate des Tages gibt.

Vor ein paar Jahren schließlich hatte ich dann die Idee eines täglichen Zufallszitats für meine Browser-Startseite, die ich seither täglich auf meinem Arbeitslaptop nutze.

Und jetzt also ein Twitter Bot für dieses Thema. Na dann mal los! :)

MediaWiki Projekt: ErWiN

In diesem Artikel möchte ich erläutern, wie es dazu kam, dass ich mich für ein Projekt nachhaltig mit MediaWiki auseinander gesetzt habe, was dabei heraus gekommen ist und was ich dabei gelernt habe.

Alles begann im letzten Jahr während einer coronabedingten Auftragsflaute in meinem Unternehmen, die mir über mehrere Monate Kurzarbeit bescherte. Was zunächst ganz erholsam und dank Kurzarbeitergeld auch finanziell abbildbar klang, führte mich doch recht bald zu einer wichtigen Frage: Was fängt man mit soviel Freizeit an?

Nachdem ich mich zunächst mit allerlei Sport und haushaltsnahen Tätigkeiten, wie z.B. Bärlauchpesto herstellen, beschäftigt habe, entschied ich mich kurzentschlossen ein neues Projekt mit MediaWiki zu starten.

ftp-mysql-dump: eine Datenbank per FTP abholen

Die letzten Wochen arbeite ich recht intensiv an einem aktuellen Projekt und habe daher wenig Zeit aufs Bloggen verwendet. Dazu werde ich später sicherlich nochmal was schreiben. In diesem Zusammenhang kam ich aber an eine Aufgabenstellung, die mir immer mal wieder über den Weg läuft:

“Wie holt man eigentlich am besten einen Datenbankstand vom Webserver, wenn man kein SSH zur Verfügung hat?”

David

Bisher habe ich dafür oft Tools wie Adminer genutzt. Das klappt gut, aber da ich ein Freund von Automatisierung bin, habe ich diesmal ein Tool gesucht, welches sich in ein Makefile einbinden lässt. Meine Internet-Recherche hierzu stellte mich nicht unbedingt zufrieden, daher entschied ich mich das Ganze einfach selbst umzusetzen.

Die Grundidee war dabei möglichst ein Script zu haben, welches ohne große Abhängigkeiten funktioniert und sich automatisch zum FTP verbindet, dort dann ein Script hochlädt, dieses ausführt und direkt danach wieder löscht.

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

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