1. "Undefined function: _()"

Q: Ich bekomme die Meldung Fatal error: Call to undefined function: _() in /srv/www/htdocs/studip/config.inc.php

A: die Funktion _() ist die PHP-gettext-Funktion, die in Stud.IP fr die Internationalisierung benutzt wird.
Die obige Fehlermeldung deutet darauf hin, das Ihre PHP-Version ohne gettext-Untersttzung kompiliert wurde 
(Option 'with-gettext').
Dies lt sich mit der Ausgabe der phpinfo()-Funktion berprfen, dort sollte oben unter "Configure Command" 
die Option auftauchen und unten unter dem Block "gettext" ein "GetTextSupport enabled" stehen.

2. "undefined function: sem_get()"

Q: Jetzt komme ich gerade mal bis zur Eingangs-Hintergrundgrafik. Der Fehler, den ich jetzt erhalte ist: Fatal error: 
Call to undefined function: sem_get() in /srv/www/htdocs/studip/chat/ShmHandler.class.php on line 88

A: Die Fehlermeldung, die sie bekommen bedeutet, dass die Semaphoren Funktionen fr den Zugriff auf gemeinsam 
genutzte Speicherbereiche nicht korrekt in PHP einkompiliert wurden. Diese Funktionen werden fr den Chat bentigt. 
berprfen knnen sie das mit einem phpinfo(), in der Ausgabe sollte unter 'Additional Modules' (ziemlich weit unten) 
sysvshm (shared memory) und sysvsem (semaphores) angezeigt werden.
Wenn sich der Fehler durch erneutes Konpilieren nicht beheben lt, so haben sie die Mglichkeit, den Chat auf dateibasierte 
Speicherung umzustellen. Dazu mssen sie in der Datei local.inc im PHPLIB-Verzeichnis die Variable $CHAT_SERVER_NAME auf 
"ChatFileServer" umstellen. Dies fhrt aber u.U. zu einer erhhten Belastung des Webservers, wenn mehrere Chatrume 
gleichzeitig aktiv sind. Alternativ knnen sie den Chat an dieser Stelle in der local.inc auch deaktivieren 
($CHAT_ENABLE = FALSE)

3. Die Startseite kommt immer wieder

Q: Ich habe alles fertig installiert und bekomme die Startseite von Stud.IP zu sehen. Wenn ich mich jedoch einloggen 
mchte erhalte ich immer wieder nur die Startseite.

A: In der PHP.INI muss "register_globals = On" stehen.

4. TeX und Solaris

Q: Wie bekomme ich das TeX-Modul unter Solaris zum laufen?

A: Unser Problem war, dass in der latextrenderer.class.php innerhalb der Funktion renderLatex die Option 
"interaction=nonstopmode" angegeben war (Zeile 225). Die Solaris-Latex-Variante (teTeX) kam mit dieser Option nicht 
zurecht. Nachdem diese Option entfernt war, funkionierte der Teil dann.
Das zweite Problem war der dvips-Befehl in Zeile 231. Die Solaris-Variante verlangt die Angabe der Ausgabedatei 
mit der Option "-o" usw. Nachdem diese auch angegeben war, funktionierte das Latex-Forum endlich

5. Sortierung der Umlaute

Q: Stud.IP sortiert Umlaute immer am Ende einer Liste ein, nicht da wo sie hingehren. Wie kann ich das ndern?

A: Das ist kein Problem von Stud.IP, sondern von MySQL(?). Was helfen sollte:
   - MySQL(?) runterfahren
   - in die my.cnf folgende Zeile unter [mysqld] eintragen: "default-character-set=german1"
   - in das Verzeichnis mit den Tabellen wechseln
   - "myisamchk -r -q --set-character-set=german1 *.MYI" ausfhren
   - MySQL(?) wieder starten
   
   Vorher ein Backup der DB machen :)

6. Gefhrliches Latex

Q: Ich bekomme immer [potentially dangerous Latex formula] egal was ich zwischen den tex Tags eingebe?

A: berprfen Sie, ob der Webserver Schreibrechte auf den Image Cache unter pictures/tex hat. Setzen Sie eine SuSE 
Installation ein, stellen Sie sicher, dass das Paket "tetex" installiert ist.

7. LDAP

Q: Wie richte ich LDAP Authentifizierung ein ?

Zur Authentifizierung gegen einen LDAP Server stehen im Release zwei Plugins zur Verfgung (in der local.inc als 
Ldap und LdapReader bezeichnet). Die entsprechenden Klassen befinden sich im Verzeichnis 
/studip-htdocs/lib/classes/auth_plugins und heissen dort StudipAuthLdap.class.php und StudipAuthLdapReader.class.php. 
Die Konfiguration dieser Plugins sollte in der local.inc vorgenommen werden. Hierzu muss der Name des Plugins in die 
Konfigurationsvariable $STUDIP_AUTH_PLUGIN[] eingetragen werden, normalerweise reicht das entfernen der 
Kommentarzeichen. Es kann mehr als ein Plugin aktiviert sein, die Reihenfolge, in der die Plugins bei einem 
Authentifizierungsvorgang abgearbeitet werden, kann hier auch vorgenommen werden. Unterhalb von $STUDIP_AUTH_PLUGIN[] 
mssen dann die Optionen fr das ausgewhlte Plugin konfiguriert werden ($STUDIP_AUTH_CONFIG_xxx). Fr Ldap sind 
folgende Einstellungen ntig:

    - host : Hostname des LDAP Servers, oder eine URL der Form ldap[s]://[hostname]:[port]
    - protocol_version : LDAPv2 oder LDAPv3, fr OpenLDAP 2.x.x besser 3
    - base_dn : base DN, die Suchbasis unterhalb derer die Eintrge zu finden sein mssen
    - username_attribute : Attribut, welches den Nutzernamen enthlt
    - anonymous_bind : lsst der LDAP Server ein anonymes anmelden zu, so kann vor der eigentlichen Authentifizierung 
      das Verzeichnis nach dem eingegebenen Nutzernamen durchsucht werden, um den korrekten Nutzer DN zu finden. 
      Ist das anonyme Binden ausgeschaltet, muss die Suchbasis dem Zweig entsprechen, indem die Nutzerdaten zu finden 
      sind, da der Nutzer DN in diesem Fall direkt aus der Suchbasis gebildet wird. Auerdem ist dann keine Mglichkeit 
      gegeben eine Meldung ber ein falsches Passwort zu geben.
    - error_head : Prfix der Fehlermeldung bei fehlgeschlagener Anmeldung mit diesem Plugin
    - user_data_mapping : in diesem Array werden die Zuordnungen von LDAP Attributen zu Stud.IP Datenbankeintrgen 
      vorgenommen. Diese Zurodnungen werden bei jeder erfolgreichen Anmeldung in der Stud.IP Datenbank aktualisiert. 
      Der Schlssel eines Eintrages ist das Stud.IP Datenbankfeld in der Form <tabelle>.<feld>. Zu jedem Schlssel sind 
      zwei weitere Eintrge ntig. In "callback" wird der Name der Methode im Plugin angegeben, die die Zuordnung 
      vornehmen soll, "map_args" enthlt die Argumente, die an die Methode bergeben werden. Der Eintrag dummy als 
      callback nimmt keine Zuordnung vor, verhindert aber, dass die entsprechenden Felder im Stud.IP vom Nutzer 
      verndert werden knnen, man sollte die default Eintrge fr username und password besser nicht verndern. 
      Im LDAP PLugin existieren zwei simple mapping Methoden doLdapMap und doLdapMapVorname. Erstere erwartet als 
      Argument den Namen des LDAP Attributes (z.B. sn fr den Nachnamen) und gibt einfach den Inhalt zurck. Letztere 
      nimmt zwei Argumente entgegen und versucht aus dem cn den Vornamen zu extrahieren (nur ein Beispiel). 
      Bentigt man komplexere Mappings, so empfiehlt es sich ein eigenenes Plugin von AuthLdap abzuleiten und 
      die entsprechenden Methoden dort zu realisieren.


LdapReader authentifiziert nicht den Nutzer direkt gegen den LDAP Server, sondern benutzt einen konfigurierten LDAP 
Account mit Leserechten, um das Passwort des Nutzers aus dem Verzeichnis zu lesen und mit dem eingegebenen zu vergleichen. 
Anonymes Binden wird dazu nicht bentigt. Der Vorteil dieser Lsung ist, dass das JavaScript basierte challenge-response 
Verfahren zur verschlsselten bertragung des Passwortes in Stud.IP weiter genutzt werden kann (bei Verwendung von LdapAuth 
wird es automatisch deaktiviert). Im Verzeichnis aber muss das Passwort als MD5 Hash vorliegen (Standard ist meist CRYPT, 
es sollte aber unproblematisch sein ein zustzliches Attribut einzufhren). Dieses Plugin ist als Beispiel gedacht, und 
sollte als Vorlage fr eigene Plugins dienen.
Einstellungen:

    - user_password_attribute : das Attribut des Nutzerpasswortes (Passwort muss als MD5 Hash vorliegen!)
    - reader_dn : der Nutzer DN des Accounts, der zum auslesen benutzt wird
    - reader_password : das Passwort des Accounts, der zum auslesen benutzt wird
    
8. Literaturverwaltung unter SuSE ab 9.2

Q: Probleme mit der Literaturverwaltung (Modul php-yaz fehlt) mit neueren PHP-Versionen/SuSE-Distributionen (SuSE Linux > 9.2)

Das von der Literaturverwaltung bentigte Modul php-yaz ist nicht mehr standardmig in php enthalten und muss 
nachinstalliert werden. Dabei gibt es mehrere Probleme, mit denen ein Linux-Laie schlecht umgehen kann.

Zumindest in SuSE Linux 9.2 und 9.3 gibt es fr phpyaz nmlich kein rpm. Erforderlich ist es also, die 
Datei yaz.so aus der Source zu generieren. Dazu holt man sich die Aktuelle Source (bei mir 1.04) von 
http://www.indexdata.dk/phpyaz/.

Nach dem Entpacken:

phpize
./configure
make

Unter  modules/yaz.so  ist die Extension erzeugt worden. Die Datei

yaz.so speichert man in das Verzeichnis der php-Extensions (unter SuSE Linux 9.3 ist das /usr/lib/php/extensions ).

In php.ini  (bei mir /etc/php.ini)

Ergnzt man im extensions-Abschnitt

extension = yaz.so

Neuladen des Apache-Webservers nicht vergessen!

- The Stud.IP Crew <crew@studip.de> 2005