Frequently Asked Questions (FAQ)

Wieso funktioniert Php Free Chat nicht auf Free.fr ?

Der Chat benutzt Sessions. Damit Sessions mit Free.fr funktionieren, musst du ein Verzeichnis namens “sessions” im Hauptverzeichnis deiner Seite erstellen.

Benutzer den FTP-befehl “mkdir sessions” um den Ordner zu erstellen.

Vorsicht: Free.fr wird nicht mehr unterstützt weil die Flock PHP Funktion auf deren Servern nicht verfügbar ist.

Mein Dateisystem ist langsam, wie kann ich die Leistung verbessern ?

(für Linux-Benutzer)

Windows-Benutzer können sich hier informieren: http://www.jurixt.com/xp/xp_18.htm or http://www.generation-nt.com/astuces/imprimer/124/.

Normalerweise sind die Chatdaten (Nachrichten und Benutzer) im Ordner “phpfreechat/data/private/chat/” abgelegt, der Pfad ist jedoch anpassbar.

Auf Linux existiert eine interessante Funktion, welche die Dateisystemleistung drastisch verbessert, sie heißt tmpfs. Genau genommen ist es ein RAM-basiertes Dateisystem, der Lese und Schreibzugriff wird sehr schnell sein, aber die Daten sind beim nächsten Neustart verloren.

Auf meinem Linux (debian, kernel-2.6.x), ist ein Standard tmpfs Dateisystem gemountet auf ”/dev/shm”, also meine ich, dass ich phpfreechat so konfigurieren kann, dass es die Chatdaten in diesem Ordner ablegt. Um das zu tun muss man nur diesen Parameter hinzufügen :

  $params["serverid"] = md5(__FILE__);
  $params["data_private_path"] = "/dev/shm/mychat";
  $chat = new phpFreeChat($params);
  [...]

Nur zu deiner Information: Ich habe einen Benchmark-Test (Test der Systemleistung) gemacht:

Ohne tmpfs (Festplatte) :

  • 10000 Schreibvorgänge = 9.07 Sekunden (82.49%)
  • 10000 Lesevorgänge = 0.38 Sekunden (3.49%)
  • 10000 Löschvorgänge = 0.31 Sekunden (2.84%)

Mit tmpfs (RAM) :

  • 10000 Schreibvorgänge = 0.70 Sekunden (6.37%)
  • 10000 Lesevorgänge = 0.40 Sekunden (3.64%)
  • 10000 Löschvorgänge = 0.12 Sekunden (1.16%)

Wie erstelle ich mehrere Chatkanäle (Chaträume) ?

(nur für die Versionen 0.x)

Nurmalerweise ist der “channel” Parameter automatisch generiert - basiert auf dem “title” Parameter - aber es ist möglich, ihn so zu spezifizieren, dass man mehrere voneinander vollständig unabhänige Kanäle erstellen kann.

To handle multiple independent channels into one script passing the channel name by URL, just configure the chat like this :

  $params["serverid"] = md5(__FILE__);
  $params["channel"] = $_GET["channel"];
  $chat = new phpFreeChat($params);
  [...]

Wenn man nun das Script aufruft, zum Beispiel http://.../mychat.php?channel=myroom, wird ein völlig Privater Chat erstellt und dessen daten in “phpfreechat/data/private/chat/myroom/” abgelegt.

Wie geht das mit dem Rehash?

(nur für Versionen 1.x)

Ein Rehash ist immer dann notwendig, wenn ein Parameter geändert, gelöscht oder hinzugefügt wurde. Ohne Rehash werden die alten Werte verwendet, da der Chat einen Cache dafür benutzt.

Um einen Rehash durchzuführen, geben Sie folgenden Befehl in die Eingabezeile des Chats ein:

/rehash

Zum Ausführen des Befehls benötigen Sie Adminrechte. Standardmäßig (wenn Sie das Adminpasswort nicht geändert haben) können Sie sich als Administrator identifizieren, wenn Sie nacheinander folgende Befehle ausführen:

/nick admin
/identify

(standardmäßig ist für “admin” kein Passwort definiert, Sie können aber eines setzen)

In einigen Fällen kann es vorkommen, dass Sie nach Änderungen von Parametern keinen Zugriff auf den Chat haben, um den ”/rehash”-Befehl auszuführen. Alternativ können Sie dann den Inhalt des Verzeichnisses “data/private/cache/” löschen.

Wie ändere ich das Administratorenpasswort ?

(nur für Versionen 1.x)

Administratoren (Benutzer/Passwort) werden im “admin” Parameter-Array definiert.

Zum Beispiel: Angenommen, ich möchte “Fritz” und “Fritzle” zu Admins machen, mit den jeweiligen Passwörtern “FritzPW” und “FritzlePW”, dann muss ich diesen Parameter hinzufügen:

  $params['admins'] = array('Fritz'  => 'FritzPW',
                            'Fritzle' => 'FritzlePW');

(vergiss nicht den rehash-Befehl auszuführen)

Wie kann ich Benutzerkonten aus PunBB in phpfreechat einbinden?

Du musst dieses Codefragment am Anfang deines Chatscripts einfügen:

  session_start();
  if (!isset($_SESSION['punbb_to_pfc_nickname']))
  {
    define('PUN_ROOT', dirname(__FILE__).'/forum/'); // Passe diesen Pfad auf das Installationsverzeichnis deines Forums an
    require PUN_ROOT.'include/common.php';
    $userdata = array();
    check_cookie($userdata);
    if ($userdata['username'] == 'Guest')
      $userdata['username'] .= rand(1,1000); // Erstellt einen Zufälligen Gastbenutzernamen
    $_SESSION['punbb_to_pfc_nickname'] = $userdata['username'];
  }

Dann kannst du die normale phpfreechat Parameterliste unter benutzung von “$_SESSION['punbb_to_pfc_nickname']” als den phpfreechat Benutzernamen schreiben. Zum Beispiel:

  require_once "src/phpfreechat.class.php";
  $params["serverid"]          = md5(__FILE__);
  $params["title"]             = "phpFreeChat in Verbindung mit PunBB";
  $params["channels"]          = array("Allgemein","PunBB Support");
  $params["language"]          = "de_DE";
  $params["nick"]              = $_SESSION['punbb_to_pfc_nickname'];
  $chat = new phpFreeChat($params);

Wie kann ich Benutzerkonten aus phpBB in phpfreechat einbinden?

Du musst dieses Codefragment am Anfang deines Chatscripts einfügen:

  define('IN_PHPBB', true);
  $phpbb_root_path = dirname(__FILE__).'/forum/'; // Passe diesen Pfad auf das Installationsverzeichnis deines Forums an
  $chat_root_phpbbrealtive_path = '../phpfreechat/'; // URL des Chats, relativ zum phpBB-Verzeichnis ;)
  include( $phpbb_root_path . 'extension.inc' );
  include( $phpbb_root_path . 'common.' . $phpEx );
  $userdata = session_pagestart($user_ip, PAGE_INDEX);
  init_userprefs($userdata);
  // Leitet den Benutzer zur phpBB Login-Seite weiter, sofern er nicht eingeloggt ist
  if ( !$userdata['session_logged_in'] )
    redirect(append_sid($phpbb_root_path . "login.$phpEx?redirect=" . $chat_root_phpbbrealtive_path . "index.$phpEx", true));

Dann kannst du die normale phpfreechat Parameterliste unter benutzung von “$userdata[username]” als den phpfreechat Benutzernamen schreiben. Zum Beispiel:

  require_once "src/phpfreechat.class.php";
  $params["serverid"]          = md5(__FILE__);
  $params["title"]             = "phpFreeChat in Verbindung mit phpBB";
  $params["channels"]          = array("Allgeimein","phpBB Support");
  $params["language"]          = "de_DE";
  $params["nick"]              = $userdata[username];
  $chat = new phpFreeChat($params);

Beachte: Wenn die Zeichenkodierung deines phpbb2 “windows-1251” ist, musst du $params[“nick”] = $userdata[username]; mit $params[“nick”] = iconv(“windows-1251”, “UTF-8”, $userdata[username]); ersetzen

Du kannst gerne diese phpBB-Integration im Forum kommentieren.

Wie kann man phpfreechat Upgraden?

Angenommen du benötigst ein Upgrade von “1.0-beta8” auf “1.0-beta10” und du hast diese Dateistruktur auf deinem Server:

/dein/web/site/hauptverzeichnis/chat.php
/dein/web/site/hauptverzeichnis/phpfreechat-1.0-beta8/
/dein/web/site/hauptverzeichnis/phpfreechat-1.0-beta10/

Vor dem Upgrade sollte das “chat.php” Script in etwa so aussehen:

  require_once dirname(__FILE__).'/phpfreechat-1.0-beta8/src/phpfreechat.class.php';
  $params['serverid'] = md5(__FILE__);
  $chat = new phpFreeChat($params);

Um upzugraden musst du nur die require_once-Zeile ändern.

  require_once dirname(__FILE__).'/phpfreechat-1.0-beta10/src/phpfreechat.class.php';
  $params['serverid'] = md5(__FILE__);
  $chat = new phpFreeChat($params);

Beachte: “phpfreechat-1.0-beta8” und “phpfreechat-1.0-beta10” Verzeichnisse sind nur einfache entpackte phpfreechat Quellcodes, wie sie auf der Downloadseite gefunden werden können.

Wie ändere ich die Zeitzone des Chats ?

Zu Beginn gehe bitte sicher, dass die PHP-interne Zeitzone korrekt eingestellt ist. Wenn du zum Beispiel einen Chat in Deutschland ausführen möchtest, füge dieses Codefragment am Anfang deines Chatscripts ein (dies funktioniert nur in PHP5) :

  date_default_timezone_set('Europe/Berlin');

Wenn das ändern der PHP-Zeitzone nicht reicht, musst du mit dem time_offset Parameter experimentieren. Wenn du zum Beispiel die Zeit um 2 Stunden vorstellen möchtest, muss dieser Parameter ins Chatscript :

  $params['time_offset'] = 60*60*2; // Verschiebung in Sekunden

Wie kann man die Wortzensur abschalten ?

Die Wortzensur ist als ein Befehlsproxy eingebunden. Um sie zu deaktivieren, muss man den 'censor'-Proxy abschalten. Füge dazu einfach diesen Parameter hinzu :

$params['skip_proxies'] = array('censor');

(vergiss nicht den rehash-Befehl auszuführen)

Wo ist mein "Chatscript" ?

Das Chatscript ist das php-Script welches ausgeführt wird, wenn ein Benutzer den Chat aufruft. Alle Chatparameter befinden sich in dieser Datei. Normalerweise wird dieses Script verwendet für das Laden des Chats und alle AJAX-Anfragen ab diesem Zeitpunkt. Du kannst ein sehr einfaches Chatscript in der Datei “phpfreechat-x.x/index.php” finden.

Wieso kann ich einige Dateien im phpfreechat-Ordner nicht löschen ?

phpFreeChat benötigt Schreibrechte für die Verzeichnisse data/private/ und data/public/. Diese Verzeichnisse werden benutzt um gespeicherte Daten und einige öffentliche Resourcen (Bilder, CSS, Javascript) zu speichern. Die meiste Zeit werden diese Dateien vom Webserverbenutzer (“www-data” auf Debian) erstellt.

Ein Problem kann auftreten, wenn die Webserverrechte sich von den Benutzerrechten (FTP-Benutzer, SSH-Benutzer …) unterscheiden. Deswegen kann der Benutzer diese Dateien nicht löschen (rm, mv, chmod), weil er nicht als Dateibesitzer eingetragen ist. Um dieses Problem zu beheben, musst du ein kleines Script schreiben, welches diese Dateien zerstört. Führe es dann mit deinem Browser aus, sodass die Dateien mithilfe der Webserver-Rechte zerstört werden. Eine andere Option ist es, deinen Administrator zu fragen, diese Dateien zu Löschen oder die Rechteeinstellungen so zu Konfigurieren, dass man dieselbe Rechte hat wie der Webserver.

Fork me on GitHub