Kolab Winterfell auf Ubuntu 16.04 – php dependencies
Ein Kollege versuchte auf Arbeit einen Kolab Mailserver auf Ubuntu 16.04 aufzusetzen, was aber auf Grund von Abhänigkeitsproblemen nicht funktionierte. Kolab depended nämlich noch auf php5, welches allerdings unter Xenial vpn php7 ersetzt wurde . Kolab hat das noch nicht angepasst, da das Paket php-kolabformat swig benötigt, welches allerdings noch kein php7 supported.
Behelfen kann man sich nun indem man zwei PPA’s von Ondřej Surý added, über welche man php5 installieren kann:
php5* dummy packages
sudo add-apt-repository ppa:ondrej/php5-compat
main php ppa
sudo add-apt-repository ppa:ondrej/php
Wenn man das getan hat kann man mit der Installationsanleitung von Kolab weitermachen. Ein Hinweis in dieser Anleitung seitens Kolab, das es zu Problemen kommen kann, auf Grund von Abhängkeiten zu php5, wäre natürlich auch nicht so verkehrt.
Update 1
Es muss noch ein Symlink unter /etc gesetzt werden, da nach der Installation von php der Pfad /etc/php/5.6/ lautet, aber kolab möchte gern /etc/php5/ haben.
ln -s /etc/php/5.6/ /etc/php5
Update 2
Nach der Installation wird man feststellen das man /kolab-admin nicht aufrufen kann im im Browser. Im Log findet man dazu folgenden Fehler:
[05-Aug-2016 14:54:48 Europe/Berlin] PHP Fatal error: Call to undefined function mb_internal_encoding() in /usr/share/kolab-webadmin/lib/functions.php on line 60
Dies fixt man indem man php5.6-mbstring installiert
apt-get install php5.6-mbstring
Update 3
Und dann folgt auch schon direkt der nächste Error, diesmal im Zusammenhang mit Roundcube. Nach dem Login sitzt man vor einer weißen Seite und im Log bekommt man folgendes:
[05-Aug-2016 15:57:16 Europe/Berlin] PHP Fatal error: Call to undefined function dl() in /usr/share/php/kolabformat.php on line 22
In dieser mail Liste fand ich dann den Hinweise, das er die Funktion dl() aufruft wenn kolabformat nicht geladen ist. Und tatsächlich, schaut man unter /etc/php5/apache2/conf.d nach, stehen da die Kolab Module nicht drin. Also macht man folgendes:
phpenmod kolabformat phpenmod kolab
Wenn man sich jetzt mal eine phpinfo Seite anlegt (apache2 natürlich vorher neu starten)
wird man sehen, das unter **Additional .ini files parsed ** 20-kolab*.ini Files auftauchen. Leider war es das aber noch nicht, denn PHP kann die .so Dateien offenbar nicht finden, denn scrollt man ganz noch unten, tauchen die Module nicht in der Auflistung auf. Das liegt daran das die Module im Verzeichnis /usr/lib/php5/20131226/ liegen, PHP aber im Verzeichnis /usr/lib/php/20131226/ nach den Modulen sucht. Also muss man hier auch noch entsprechende Symlinks setzen:
cd /usr/lib/php/20131226/ for l in $(find /usr/lib/php5/20131226/ -type f); do ln -s $l $(echo $l | awk -F"/" '{print $6}'); done
Anschließend den apache2 neu starten und siehe da, man kann sich einloggen.