Woran liegt der folgende Fehler in phpGroupWare 0.9.16.000: »fopen(”/tmp/sess_[...]“, “r”) - Permission denied in [...]/phpgwapi/inc/class.sessions_php4.inc«?

May 26th, 2008 by matthias

How to reproduce this error: Use phpgroupware 0.9.16.000, her with PHP 4.2.3; register_globals = on for all apps except notes, projects, qmailldap, stocks, todo.

  1. Install phpGroupWare correctly, including the apps
  2. Point your browser to /setup below your phpGroupware Installation URL
  3. Choose “Click here to setup an admin account and (optionally) 3 demo accounts.*” Then only setup the admin account. This is how to recover from the phpgw crash (step 6), too.
  4. Login as admin user into phpgw and choose “Preferences > Change Your Settings > Your Preferences”. Or, choose “… > Default Preferences > Your Preferences”.
  5. Choose these Options and then “Save”: Language: German and Show number of current users: Yes
  6. Now, phpGroupWare outputs approx some 100 kB of error messages. This is reproducible for me. See below for the kind of error messages I get, all the time jumping between lines 208, 209, 210 in the specified script.
  7. Workaround: use a Forced Preference for language or number of current user information that prohibits the above mentioned combination of settings to be done by your users.

Here are the error messages that are generated:

Warning: fopen("/tmp/sess_66bb6b04ba1ddd84eec30c9665360181", "r") - Permission denied in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 208
Warning: fread(): supplied argument is not a valid File-Handle resource in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 209
Warning: fclose(): supplied argument is not a valid File-Handle resource in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 210
Warning: fopen(”/tmp/sess_e46ac33657b1d69993c7fc104a9cf71a”, “r”) - Permission denied in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 208
Warning: fread(): supplied argument is not a valid File-Handle resource in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 209
Warning: fclose(): supplied argument is not a valid File-Handle resource in /homepages/24/d70284365/htdocs/www.ansorgs.de/groups.ansorgs.de/phpgwapi/inc/class.sessions_php4.inc.php on line 2101.
Install phpGroupWare correctly, including the apps

And now, something about the same error when installing.

Problematisch ist: in der Konfiguration von PHP4 (php.ini an unbekanntem Ort) steht session.save_path = /tmp . Das gilt für alle User. Der Webserver läuft aus der Sicht jedes Users unter seinem eigenen Benutzernamen, etwa p3002017. Es ist nun möglich, dass phpGroupWare-Installationen verschiedener Benutzer in /tmp Session-Dateien mit gleichem Namen anlegen, also einander überschreiben. Sie beginnen mit sess_ und haben danach eine lange hexadezimale Zeichenkette. Wenn dies ein Hashwert ist, könnte es das Überschreiben erklären. Somit werden Session-Dateien also ungültig. Erkennbar ist das daran, dass sie für den eigenen Benutzer nicht mehr lesbar ist und phpGroupWare etwa folgende Meldungen ausgibt:

Warning: fopen("/tmp/sess_dc4886a4eec5f", "r") - Permission denied
in /somepath/phpgwapi/inc/class.sessions_php4.inc.php
on line 208

Diese Problemanalyse wird dadurch bestätigt, dass die Fehlermeldungen in phpGroupWare verschwinden, wenn man einen neuen Benutzer anlegt und sich als solcher einloggt: klar, denn es wurden neue Session-Dateien angelegt statt dass alte gesucht wurden, und es ist sehr unwahrscheinlich, dass die neuen Dateien bereits von anderen phpGroupWare-Installationen überschrieben wurden. Das Prefix sess_ wird von phpGroupWare generiert, so dass nur phpGroupWare-Installationen miteinander im Konflikt stehen. Das Problem tritt selten auf, wenn die Server wenig genutzt werden, z.B. nachts. Es ist möglich, dieses Problem durch eine eigene php.ini zu beheben. Man lege sie ins Webserver-Rootverzeichnis der Domain oder Subdomain. Sie enthalte den vollständigen Pfad zum persönlichen tmp-Verzeichnis (mit entspr. Zugriffsrechten). Beispielinhalt:

session.save_path = /somepath/mytmpdir

Das Problem wird nicht gelöst, indem man Einstellungen in »Admin :: Site configuration :: Use cookies to pass sessionid:« und »Admin :: Site configuration :: check ip address of all sessions:« macht.

Eine weitere Möglichkeit sind evtl. Einstellungen in der .htaccess wie beschrieben in phpGroupware Mailingliste, 2003-09, Nachricht 241.

Dort steht auch ein möglicher Grund des Folgeproblems »Your session could not be verified.«: Cookies werden neben phpGroupWare noch von sitemgr verwaltet und abgelegt in /tmp wie bisher. Das muss noch umgestellt werden.

Tatsächlich wird auch nach Umstellung des /tmp-Verzeichnisses sowohl dort als auch am neuen Ort eine sess_-Datei zur aktuellen Session angelegt. Die session-ID der aktuellen Session kann man im Source-Code der HTML-Seite nach dem Einloggen nachlesen.

Aber: das Problem mit nicht lesbaren sess_*-Dateien tritt nur auf (dann aber für alle Benutzer) wenn man als Admin die Default-Preferences (oder einen bestimmten Teil davon) ändert. Und zwar tritt es dann unabhängig von der Serverbenutzung auf. Bisher hilft dann nur, im Setup-Bereich alle Benutzer zu löschen und einen neuen Admin-Benutzer anzulegen. Löschen der Cookies hilft nur, um zum Login-Screen zu gelangen wenn man nur den Domain-Namen eingibt.

Posted in 1&1, Netzwerk, Sprache: Deutsch, alle Artikel | No Comments »

Wie kann ich Ansagen für die Sprachmailbox bei 1&1 VoIP-Telefonie erstellen?

May 5th, 2008 by matthias

Benötigtes Dateiformat nach Angabe von 1&1: .wav-Datei, 8kHz, 16 Bit, mono, max. 2MB. Befehl zum Erstellen:

  1. sox 1und1.MessageBox.abwesend.mp3 -t .wav -r 8000 -c 1 -w 1und1.MessageBox.abwesend.wav
  2. sox 1und1.MessageBox.unpassend.mp3 -t .wav -r 8000 -c 1 -w 1und1.MessageBox.unpassend.wav

Posted in 1&1 | No Comments »

Dokumentation eines Systems aus VoIP-Telefonie (bei 1und1), Handy und Homezone (bei O2), mit Messagebox, das auf maximale Erreichbarkeit und Verständlichkeit ausgelegt ist?

May 5th, 2008 by matthias

Zusammenfassung der Konfiguration:

  • Messagebox auf dem Softphone ausschalten, auf dem Handy einschalten. Aufgrund von Parallel Call und Weiterleitung nimmt diese Messagebox also auch Anrufe auf den VoIP-Nummern entgegen. Man stelle ein:
    – »Menü: Einstellungen: Anrufeinstellungen: Umleiten falls keine Antwort: Aktivieren: Zur Sprachmailbox: nach 25 Sekunden«
    – »Menü: Einstellungen: Anrufeinstellungen: Umleiten falls kein Empfang: Aktivieren: Zur Sprachmailbox« (standardmäßig sofort)
  • Parallel Call auf der Homezone-Nummer bei Anruf auf der VoIP-Nummer (einstellen im 1&1-Konfigurationsmenü).
  • Die Ansage der Handy-Messagebox so gestalten dass sie auch passt für Anrufer die sie nach Anruf auf der VoIP-Nummer erreichen.
  • In der Ansage der Handy-Messagebox die Handynummer mitteilen. Denn Weiterleitungen auf die Handynummer sind zu teuer und sind deshalb nicht empfehlenswert.

Vorteile davon, die Handy-Messagebox statt der VoIP-Messagebox zu verwenden: es muss nur eine Messagebox gewartet und abgerufen werden; und Nachrichten erreichen einen mobil und normalerweise sofort per SMS. Man kann beliebig viele weitere VoIP-Nummern in dieser Art zusätzlich verwenden, also eine gemeinsame Messagebox für alle Nummern haben (z.B. geschäftliche und private).

Eine Weiterleitung auf die Homezone-Nummer bei Anruf auf der VoIP-Nummer kann im 1&1-Konfigurationsmenü zus. eingestellt werden. Das ist jedoch völlig unnötig: eine Weiterleitung wenn das Endgerät nicht angemeldet ist ist unnötig weil auch dann der Parallel Call funktioniert; eine Weitereleitung bei besetzt sollte man nicht einschalten sondern Anklopfen am Endgerät einschalten (reagiert man darauf nicht, nimmt die Messagebox des Handys ohnehin nach 25s entgegen); eine Weiterleitung bei Nichterreichbarkeit nach 40s sollte man nicht einschalten weil durch den Parallel Call die Messagebox des Handys bereits nach 25s entgegennimmt.

Fälle bei Anruf auf der VoIP-Nummer:

  • Softphone registriert, Handy in Homezone: Softphone und Handy klingeln parallel, nach 25s nimmt die Handy-Messagebox an. Nimmt man das Gespräch auf dem Handy an zahlt der Angerufene die Umleitung (das sind jedoch 0ct/Minute wenn man eine Festnetz-Flatrate bei 1&1 hat).
  • Softphone registriert, Handy nicht in Homezone: Handy-Messagebox nimmt sofort an. Achtung: das passiert auch wenn das Handy ausgeschaltet ist. Man darf also zu Hause nie das Handy ausschalten sonst empfängt man gar keine Anrufe mehr weil alle Anrufe sofort auf die Messagebox weitergeleitet werden und das Handy außerdem keine SMS zu den Messagebox-Nachrichten empfängt.
  • Softphone nicht registriert, Handy in Homezone: Handy klingelt, nach 25s nimmt die Handy-Messagebox an.
  • Softphone nicht registriert, Handy nicht in Homezone: Handy-Messagebox nimmt sofort an.

Fälle bei Anruf auf die Homezone-Nummer:

  • Handy in Homezone: Handy klingelt, nach 25s nimmt die Handy-Messagebox an.
  • Handy nicht in Homezone: Handy-Messagebox nimmt sofort an. Achtung: das passiert auch wenn das Handy ausgeschaltet ist.
  • Fälle bei Anruf auf die Handynummer:

    • Handy registriert: Handy klingelt, nach 25s nimmt die Handy-Messagebox an.
    • Handy nicht registriert: Handy-Messagebox nimmt sofort an.

    Geeignete Messagebox-Ansage:
    ». Hier ist … und so bin ich gerade nicht erreichbar. Wenn es schon 25s klingelte kann ich den Anruf leider nicht entgegennehmen; dann bitte eine Nachricht aufsprechen. [Pause] Wenn die Mailbox sofort dranging: versuche statt der Festnetz-Nummer (oder Homezone-Nummer) meine Handynummer. Wenn das nicht hilft ist das Handy außerhalb des Netzes, selten auch mal ausgeschaltet. Dann bitte ebenfalls eine Nachricht aufsprechen. Nachrichten erhalte ich per SMS sobald ich erreichbar bin. Nun noch meine Handynummer: 0176 23742071. Nochmal: 0176 23742071.«

    Ein Soundmotiv (alternativ 1,5s Stille) dient dazu, den sporadisch auftretenden Fehler zu korrigieren dass der erste Teil der Ansage nicht hörbar ist. Geeignete Soundmotive sollten keine klirrenden, hohen Frequenzen enthalten weil dies bei Übertragung mit der Sprachbandbreite in Mobilfunknetzen schrecklich klingt. Ein zu lautes Soundmotiv klingt ebenfalls schrecklich weil dann die Lautsprecher übersteuert werden. Wenn kein Upload der Nachricht per Web-Interface möglich ist (z.B. O2) dann sollte man nur das Soundmotiv per Lautsprecher einspielen und die Nachricht selbst sprechen. So ergibt sich die beste Qualität. Es ist schwierig beim Einspielen des Soundmotivs die richtige Lautstärke der Lautsprecher und den richtigen Abstand des Handys von den Lautsprechern zu finden (grob: gehörte normale Sprachlautstärke und 50cm Abstand). Bisher gelang es nicht, Soundmotive irgendeiner Art in akzeptabler Qualität in die Message-Box-Ansage eines Mobiltelefons zu integrieren. Das liegt jedoch nicht am zu schlechten Frequenzband (denn Provider stellen manchmal Soundmotive während des Klingeltons zur Verfügung). Auch eine Sprachansage wird deutlich besser wenn man sie direkt statt per Lautsprecher aufnimmt.

    Für den Fall dass Weiterleitungen und Parallel Calls bei 1und1 nicht funktionieren gibt es eine andere Lösung. Sie war bis etwa 2007-10 erforderlich weil aufgrund eines Bugs bis dahin Weiterleitungen und ParallelCalls nur zur 1und1 VoIP-MessageBox-Nummer oder evtl. auch zu andern 1&1 VoIP-Nummern möglich waren, nicht jedoch zu beliebigen anderen Nummern (Festnetz oder Mobilfunk). (Sporadisch funktionierte ein eingerichteter Parallel Call mal, aber nie zuverlässig.) Die Lösung war dann: man richtet die FritzBox so ein dass sie sich als Client der VoIP-Nummer registriert; das ist parallel zu einem anderen Client (hier einem Softphone) problemlos möglich. Dann stellt man in der FritzBox eine Rufumleitung an die Homezone-Nummer ein mit »Art der Umleitung: Parallel Call«. Dies ist (mit VoIP-Flatrate) genauso kostenlos wie eine Weiterleitung direkt über das Konfigurationsmenü von 1&1. Nachteile sind aber:

    • Belastung der DSL-Verbindung (d.h. es könnten Qualitätsprobleme bei gleichzeitigen Telefonaten anderer auftreten).
    • erhöhte Verzögerung der Sprachsignale weil eine zusätzliche VoIP-Verbindung angehängt wird (ergibt doppelte Verzögerung im Gegensatz zur Konfiguration von Umleitungen im Konfigurationsmenü); in der Praxis war dies aber kaum ein Problem
    • als Absenderrufnummer verwendet die Fritz! Box stets die Rufnummer des zur Weiterleitung verwendeten VoIP-Accounts, nicht die des Anrufers; so kann man auf dem Handy nicht erkennen, wer gerade anruft
    • Die Parallel-Call-Funktion der FritzBox hat einen Timeout von 30s, d.h. nach 30s hört der ParallelCall einfach auf (das ist etwas anderes als ein Timeout von der angerufenen Seite aus, bei Handys standardmäßig nach 40s). Damit die Handy-Messagebox trotzdem die Chance hat den Anruf anzunehmen sollte man deshalb im Handy einstellen: »Umleiten falls keine Antwort: Aktivieren: Zur Sprachmailbox: nach 25 Sekunden«.

    Posted in 1&1, Mobilfunk | No Comments »

    Wie kann ich über 1&1-Internettelefonie PSTN-Nummern erreichen, zu denen eine gleichlautende Internet-Rufnummer existiert?

    April 29th, 2008 by matthias

    Eine Festnetznummer, zu der keine gleichlautende Internet-Rufnummer existiert, wird umgesetzt in etwas wie 49123412345@sip.mgc.voip.telefonica.de . Also sollte man erwarten, dass man eine Festnetznummer, zu der eine Internetrufnummer existiert, mit einer analog aufgebauten SIP-Adresse erreichen kann. Im vorliegenden Fall führte das jedoch zu »Internal Server Error«.

    Posted in 1&1 | No Comments »