Kürzlich wurde PHP7 freigegeben und seit heute ist es auch bei Uberspace verfügbar. Da auch ownCloud PHP7-Bereitschaft meldete, schien meine bei Uberspace betriebene ownCloud ein guter Startpunkt zu sein.
Wie von den Ubernauten beschrieben, war das Umstellen der PHP-Version ein Klacks:
$ echo PHPVERSION=7.0 > ~/etc/phpversion
$ killall php-cgi
Nach dem Aus- und erneutem Einloggen war auch an der Kommandozeile PHP7 am Start:
$ php -version
PHP 7.0.0 (cli) (built: Dec 3 2015 23:16:00) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
Nun meldete sich aber mein ownCloud-Cronjob, da er die redis-PHP-Extension nicht
mehr laden konnte, denn die war ja gegen PHP5.5 gebaut. Die Ubernauten haben ein
sehr komfortables Werkzeug namens uberspace-install-pecl
zum Installieren von
PHP-Extensions am Start. Also los:
$ uberspace-install-pecl redis
<....>
In file included from /tmp/myname/tmp.Hwpwl21518/redis-2.2.7/redis.c:27:
/tmp/myname/tmp.Hwpwl21518/redis-2.2.7/common.h:3:40: error:
ext/standard/php_smart_str.h: No such file or directory
Schade, das klappt so nicht. Der Fehler wird im phpredis-Projekt schon länger diskutiert und es gibt einen PHP7-kompatiblen Branch. Da ich den Komfort des Uberspace-Bauprozesses nicht missen möchte und nur der Download der Paketquellen modifiziert werden muss, habe ich das Bau-Skript genommen (also kopiert) und angepasst:
$ cp $(which uberspace-install-pecl) ~/uberspace-install-phpredis.sh
$ vim ~/uberspace-install-phpredis.sh
Im Skript wird in Zeile 59 der Download des Installationspakets
$ pecl download ${PECL_NAME}
ersetzt durch das Klonen des PHP7-Branches des Github-Projekts
$ git clone -b php7 https://github.com/phpredis/phpredis.git
und das Skript ausgeführt.
$ ~/uberspace-install-phpredis.sh redis
<...>
Installing redis.so to /home/dirkr/pecl ... done
Activating redis.so in ~/etc/php.ini ... done
Killing currently running PHP processes (if any) ... done
Fertig. Es wäre natürlich elegant, das Skript so umzubauen, dass es neben dem Extension-Namen auch Git-URLs verarbeitet, aber das kann ja noch werden. Außerdem wird das phpredis-Projekt (und andere, noch nicht ganz fertige Php-Extension-Projekte) sicher "in Kürze" die PHP7-Modifikationen in die nächste Release übernehmen und dann ist dier "Hack" sowieso überflüssig.