PHP Fehlerdiagnose

Bei PHP-Installationen ist meistens die Fehlerausgabe deaktiviert, was bei Produktivumgebungen in der Regel auch sinnvoll ist. Während der Entwicklung oder bei der Fehlerdiagnose ist das jedoch eher hinderlich.

error_reporting(E_ALL ^ E_NOTICE); // Alle Fehler ausser Hinweisen anzeigen
ini_set("display_errors", 1); // Fehler im Script selbst anzeigen

Wenn man die Fehler nicht ausgeben möchte (z.B. in einem Produktivsystem) kann man sie auch im Fehlerprotokoll des Webservers sehen.

Bei manchen Webspace Hostern hat man allerdings keine Möglichkeit auf das Fehlerprotokoll des Webservers zuzugreifen. Möchte man trotzdem PHP Fehlermeldungen sehen kann man das Log auf eine eigene Datei umbiegen:

ini_set("log_errors", 1); // Fehler ins Protokoll schreiben
ini_set("error_log", "/path/to/php_errorlog.log"); // Pfad zu eigenem Fehlerprotokoll setzen

Natürlich funktioniert das nur wenn der Hoster die Benutzung des ini_set Befehls erlaubt, einige Hoster verbieten das.

Tiny Tiny RSS zeigt keine Bilder mehr an

Ganz kurzer Tipp wenn Tiny Tiny RSS auf einmal statt Bildern nur noch Links zu den Bildern in den Feeds anzeigt obwohl die Einstellungen richtig sind:

ttrss_login

Wenn man sich beim Einloggen verklickt und statt “Erinnere dich an mich” auf “Weniger Datenverkehr nutzen” aktiviert werden statt Bildern nur die Links zum Bild angezeigt.

Windows 8 Mail App verschickt keine Mails

Gestern Abend musste ich mit Erschrecken feststellen dass die Windows 8 Mail App seit ich sie benutze keine einzige Mail verschickt hat. Es hat alle Mails die ich geschrieben hatte schön brav im Postausgang gesammelt und keine einzige Meldung angezeigt dass es die Mails nicht verschicken kann. Den Postausgang bekommt man nicht mal direkt angezeigt, den sieht man erst wenn man die Ordnerliste auf dem Server ausklappt.

mailapp_folders

Klar, ich könnte den Ordner als Favorit markieren damit er immer zu sehen ist, dann sehe ich auch die Zahl der Mails die sich darin befinden. Aber mal im Ernst, wie oft will ich das sehen? Ist es wirklich zuviel verlangt eine Fehlermeldung auszugeben wenn der Emailversand fehlschlägt?

Ich bin ja schon froh dass die Mail App seit Windows 8.1 auch die Möglichkeit bietet seiner Meinung nach “problematische” Zertifikate zu akzeptieren, vorher konnte ich die App gar nicht benutzen.

mailapp_server

Ich nutze für meinen eigenen Mailserver halt ein selbst erstelltes Zertifikat, es wird dadurch ja nicht weniger sicher und ich muss dafür nicht unnötig Geld ausgeben. Wenigstens hier könnte man ja eine Meldung ausgeben dass der angegebene Port nicht funktioniert. Aber nein, es wird einfach stillschweigend hingenommen.

Danke Microsoft.

Internet Explorer unter Windows 2012 Server benutzbar machen

Wie auch in den vorherigen Versionen vom Windows Server wird der Internet Explorer mit aktivierter erweiterter Sicherheitskonfiguration ausgeliefert. In der Theorie eine gute Sache, ist es in der Praxis immer extrem nervig da man nicht mal von der Download-Seite von Microsoft etwas herunterladen kann. In den Einstellungen vom Internet Explorer kann man sich zu Tode klicken wenn man versucht die Downloads zu erlauben.

Eigentlich ist es ganz einfach die Sicherheitskonfiguration zu deaktivieren, es ist nur ein kleines Bisschen besser versteckt als bei der Vorgängerversion Windows Server 2008. Internet Explorer unter Windows 2012 Server benutzbar machen weiterlesen

Windows 8.1 Update auf Latitude E6530

Dinge die nach dem Update auf Windows 8.1 Enterprise auf meinem Latitude E6530 nicht mehr funktionierten (und die Lösung dafür). Beim Update wurden alle installierten Anwendungen und Einstellungen beibehalten.

  • Externe Monitore
    Eine der Grafikkarten konnte nicht gestartet werden, ein Update des Treibers über den Device Manager behob das Problem.
  • Cisco AnyConnect VPN Client
    Setup vom AnyConnect Client starten und Installation reparieren.
  • Remote Server Administration Tools
    Die neuere Version herunterladen und installieren.
  • Meldung auf dem Desktop: SecureBoot isn’t configured correctly
    Beim Booten mit F12 das Menü öffnen und Secure Boot aktivieren.
    (Achtung: Bitlocker vorher pausieren. Ich weiß nicht ob es nötig ist, aber sicher ist sicher)
  • Skype Support mit Trillian
    Hier liegt der Schwarze Peter wohl bei Skype, das von Trillian genutzte SkypeKit funktioniert nicht mehr und wenn ich die Developer-Seiten von Skype richtig deute wird SkypeKit wohl auch nicht mehr gepflegt. In diesem Thread im Trillian Support Forum gibt es eine ältere Version von SkypeKit.exe die im Kompatibilitätsmodus für Windows 7 funktioniert. Mal schauen wie das in Zukunft aussieht.

Deutsches Tastaturlayout mit englischem Windows 8

Ich bevorzuge seit einiger Zeit mein Windows auf Englisch zu nutzen, in erster Linie weil es die Suche nach Fehlermeldungen im Internet deutlich vereinfacht, man findet einfach viel mehr zu dem aktuellen Problem. Besonders deutlich ist es bei der Nutzung von Visual Studio, nutzt man ein englisches VS auf einem deutschen Windows hat man auf einmal mittendrin irgendwelche Meldungen auf Deutsch und steht wieder da, muss sie übersetzen, hoffen dass man die richtigen englischen Worte erraten hat, alles sehr nervig.

Das ganze lief immer super, bis Microsoft mit Windows 8 ein paar Sachen geändert hat. Zum Ersten die Tastenkombination zum Umschalten des Tastaturlayouts. Seit (ich glaube) Windows 95 bis hin zu Windows 7 konnte man mit der Tastenkombination Alt+Shift zwischen den aktiven Tastaturlayouts umschalten, bei den letzten Windows-Version war das bei einem deutschen Windows in der Regel DE und US (aus irgend einem Grund war das immer aktiv, das deutsche Layout jedoch das Primäre).

Deutsches Tastaturlayout mit englischem Windows 8 weiterlesen

Android-Steuerung und Fazit

Steuerung über Android-App

Die SqueezeBox-App lässt sich kostenlos aus dem Play Store herunterladen. Nach dem Start muss man sich leider mit einem SqueezeBox-Konto einloggen, aber das ist schnell auf der Website erstellt. Ich nehme mal an als Bonus kann man dann die Musik zuhause auch von unterwegs aus steuern, getestet habe ich das noch nicht.

Fazit

Ich bin begeistert. Eine absolut kostengünstige Lösung, kaum Aufwand beim Einrichten und es lässt sich komfortabel steuern. Der bisher einzige Makel ist: bei Sprache ist ein leichtes Delay zu hören, da merkt man doch dass es nicht absolut synchron ist. Aufgefallen ist mir das allerdings nur bei Beiträgen der Moderatoren im Radiostream, den ich zum Testen genutzt habe während der Media Server die Musik indizierte. Beim Abspielen von Musik (egal ob lokale MP3s oder beim Livestream) ist die Verzögerung nicht zu hören.

LMS_WI_play

Das einzige was mir jetzt noch fehlt ist squeezelite auf dem unter OpenELEC laufenden Pi im Schlafzimmer, dort ließ es sich nicht so ohne Weiteres installieren. Und natürlich noch ein Pi für die Küche…

squeezelite auf dem Raspberry Pi

Hier gibt es vom Squeezeplug-Projekt bereits fertige Images für den Pi, aber ich wollte mein bereits installiertes Raspbian behalten. Also habe ich mir squeezelite von der Google Code-Seite heruntergeladen. Wir brauchen für den Pi die Datei squeezelite-armv6hf.

Die Installation ist ruckzuck erledigt:

# Ein paar Abhängigkeiten installieren
sudo apt-get install libfaad2 libmad0 libmpg123-0
# Das Verzeichnis anlegen wo hinterher squeezelite liegt
sudo mkdir /opt/squeezelite
# squeezelite herunterladen
wget https://squeezelite.googlecode.com/files/squeezelite-armv6hf
# Die Binärdatei ausführbar machen
chmod +x squeezelite-armv6hf
# Die Datei in unser erstelltes Verzeichnis verschieben.
sudo mv squeezelite-armv6hf /opt/squeezelite/

Als nächstes brauchen wir noch die Berechtigung auf die Audio-Devices zugreifen zu können, sonst tauchen sie nicht mal beim Auflisten auf.

sudo adduser gerald audio

Jetzt einmal abmelden und neu anmelden, dann ist man in der neuen Gruppe.

$ /opt/squeezelite/squeezelite-armv6hf -l
Output devices:
null - Discard all samples (playback) or generate zero samples (capture)
default:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device

Die Audio-Devices werden erkannt und wir können ihn starten

/opt/squeezelite/squeezelite-armv6hf -s book -n Mal

Hier steht “book” für den Computer auf dem der Logitech Media Server läuft, “Mal” ist ein frei wählbarer Name für den Pi. Unter diesem Namen wird er später überall aufgeführt. Nicht wundern wenn nach dem starten nichts weiter passiert … wenn keine Fehlermeldung kommt, der Prompt aber einfach stehen bleibt dann läuft die Anwendung. Mit dem zusätzlichen Parameter -z kann man squeezelite als Daemon in den Hintergrund schicken.

Als Letztes richten wir noch für den squeezelite Daemon ein Autostart-Script ein. Ein netter Mensch hat da schonmal was vorbereitet:

# Das Script herunterladen
wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
# Die Einstellungen im Script editieren
vi squeezelitehf.sh

Ich musste anpassen: DAEMON, SL_NAME, SL_SOUNDCARD, SB_SERVER_IP

# Script ausführbar machen
chmod u+x squeezelitehf.sh
# Script nach /etc/init.d/ veschieben
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
# Script starten
sudo /etc/init.d/squeezelite
# Wenn alles richtig ist und läuft das Script zum Autostart hinzufügen
sudo update-rc.d squeezelite defaults

squeezelite unter Windows

Unter Windows ist die Installation ähnlich. Die exe-Datei für Windows herunterladen, yusätzlich brauchen wir noch die PortAudio.dll sowie die libmpg123-0.dll. Beide Dateien können einfach in das Verzeichnis der squeezelite .exe-Datei gelegt werden.

Die Parameter sind die gleichen wie unter Linux, ich musste hier noch mit -o das richtige Audio-Device angeben.

Um herauszufinden welche Bibliotheken noch fehlen kann man das Debug-Log aktivieren:

.\squeezelite-win-1.3dev.exe -d all=debug -f .\squeezelight.log

Dort finden sich dann kurz nach dem Start solche Meldungen:

[10:02:08.449] load_faad:560 dlerror: code: 126
[10:02:08.449] load_vorbis:257 dlerror: code: 126
[10:02:08.450] load_flac:214 dlerror: code: 126
[10:02:08.450] register_pcm:352 using pcm
[10:02:08.450] load_mad:309 dlerror: code: 126
[10:21:28.766] load_mpg:243 loaded libmpg123-0.dll

Hier kann man sehen welche Bibliotheken geladen wurden und für welchen Codec keine passende DLL gefunden wurde.

Natürlich möchte ich auch hier dass squeezelite automatisch startet. Ich könnte es einfach in den Autostart packen, aber dann habe ich die ganze Zeit einen Command Prompt in der Taskleiste mit dem ich nichts anfangen kann. Außerdem finde ich es “sauberer” wenn es im Hintergrund als Dienst läuft. Da das Programm ohnehin keine Grafische Oberfläche hat ist es geradezu prädestiniert dafür mit srvany als Dienst verpackt zu werden.

Wir legen also alle Dateien in ein Verzeichnis, das kann ruhig in C:\Program Files sein. Dort sollten dann mindestens liegen: squeezelite-win-1.3dev.exe, PortAudio.dll und libmpg123-0.dll.

squeezelite_folder

Als nächstes laden wir das Windows Server Resource Kit herunter und installieren es. Das geht auch auf einem Desktop-Windows, es muss kein Server sein. Als nächstes einen Command Prompt mit Administratorrechten starten.

Jetzt installieren wir eine Instanz von srvany als Dienst:

instsrv SqueezeLite 'C:\Program Files\Windows Resource Kits\Tools\srvany.exe'

Danach taucht unter den Diensten ( services.msc ausführen) ein Eintrag SqueezeLite auf. Standardmäßig wird er unter dem Systembenutzer ausgeführt, was mich grundsätzlich schon mal stört. Daher habe ich den Dienst so konfiguriert dass er unter meinem Benutzer läuft.

squeezelite_service

Als letzten Schritt müssen wir srvany noch konfigurieren, damit es die squeezelite .exe-Datei startet. Das muss leider im Registry Editor gemacht werden. Unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services befindet sich ein Schlüssel mit dem Namen SqueezeLite . Dort legen wir einen Unterschlüssel mit dem Namen Parameters an. Unter Parameters legen wir eine Zeichenkette mit dem Namen Application an. Dort wird der Pfad zu squeezelite eingetragen. Hinterher sollte das ganze so aussehen:

squeezelite_service_registry