Probleme mit ownCloud 8.2.2 und Update auf PHP 7
Posted on Thursday, 14 January 2016 in Server
Voller Vorfreude auf mehr Geschwindigkeit, speziell bei komplexeren PHP-Anwendungen wie ownCloud, habe ich das Update auf PHP 7 installiert. Die Ernüchterung folgte schnell: ownCloud in der Version 8 (aktuell 8.2.2) unterstützt PHP 7 noch nicht vollständig. So wird ohne weitere Änderungen an config-Files noch nicht einmal die Startseite richtig gerendert.
Caching mit APCu
Das Hauptproblem, dass nur ein Teil des unausgegorenen HTML-Codes ausgespuckt wird, liegt daran, dass das Caching mit APCu des neuen PHP-Releases aktuell nicht kompatibel mit dem ownCloud-Code ist. Unter Arch Linux gibt es dafür das Paket php-apcu-bc, bei dem es sich um ein Backwards Compatibility Modul handelt. Mit diesem funktioniert das Caching auch mit PHP 7 wieder problemlos.
Um die Verwendung zu aktivieren, muss in der Datei, in der das apcu.so Modul aktiviert wurde, normalerweise in der Datei /etc/php/conf.d/apcu.ini, nach der Zeile extension=apcu.so noch zusätzlich extension=apc.so eingefügt werden. Nach einem Neustart des PHP-Servers läuft auch das Caching wieder problemlos. Voraussetzung ist natürlich, dass in der config von ownCloud, standardmäßig unter /etc/webapps/owncloud/config/config.php, das Caching mit APCu mit der Zeile 'memcache.local' => '\OC\Memcache\APCu', aktiviert wurde.
Wichtig in diesem Zusammenhang ist auch, dass in der php.ini unter dem Teil [apc] die Zeile apc.enable_cli=1 auskommentiert oder eingefügt wurde. Ansonsten kann dies ebenfalls zu Problemen führen.
Weitere Änderungen, die ich im Zuge des Updates vorgenommen habe, war die folgenden Module in der php.ini zu aktivieren:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
Kalendersynchronisation mit SabreDAV
Ein anderes Problem ist, dass die in ownCloud enthaltene Version von SabreDAV, welches unter anderem für die Snychronisierung des Kalenders genutzt wird, nicht kompatibel mit PHP 7 ist. Dies äußert sich darin, dass z. B. bei der Synchronisierung mit Kalendern auf anderen Geräten wie Android, Thunderbird, etc. die Kalender leer erscheinen. Daten mittels CalDAV an ownCloud schicken funktioniert, neue Kalendereinträge erscheinen in der Weboberfläche, aber die andere Richtung bereitet Probleme. Es kommt aufgrund der veralteten SabreDAV -Version zu einer Fehlermeldung, welche von üblichen Diensten wie beispeilweise DAVdroid damit quittiert wird, dass der Kalender geleert wird, weil ein scheinbar leerer Kalender vom Server gesendet wird. Dies führt auch zu vielen Fehlermeldungen im Administrationsbereich von ownCloud. Der dortige Fehlerlog ist voll mit wenigsagenenden Meldungen. Abhilfe, ohne selbst Dateien von SabreDAV zu aktualisieren und zu hoffen, dass alles problemlos funktioniert, schafft das im März erwartete Release von ownCloud 9.