PHP 5.5 End of Life

Mit der gestern (21.07.) veröffentlichten PHP-Version 5.5.38 wird die Unterstützung des Versionszweiges 5.5 von den PHP-Entwicklern eingestellt, es wird keine weiteren Updates (z.B. wegen Sicherheitslücken) für diese PHP-Version mehr geben. Wir empfehlen daher allen Kunden, die gegenwärtig noch PHP 5.5 nutzen, auf die neueren PHP-Versionen 5.6 oder 7.0 zu wechseln. Beim Wechsel von PHP 5.5 auf 5.6 treten nur in sehr selten Fällen Kompatibiltätsprobleme auf, da es keine großen Unterschiede zwischen beiden Versionen gibt. Bei PHP 7.0 wurden viele veraltete Bibliotheken und Funktionen entfernt, so dass hier häufiger Kompatibilitätsprobleme auftreten. Die PHP-Versionen 5.6 und 7.0 werden noch bis Ende 2018 mit regelmäßigen Sicherheitsupdates versorgt.

Sie können die auf Ihrem Webserver standardmäßig genutzte PHP-Version mittels SSH über den Shell-Befehl php -v oder der PHP-Funktion phpinfo() ermitteln. Mittels dieser Funktion können Sie auch prüfen, ob die Umstellung Ihrer Webseite auf eine andere PHP-Version erfolgreich war. Erstellen Sie dazu im gewünschen Webspace-Verzeichnis eine Textdatei mit der Endung .php (z.B. info.php) und dem Inhalt <?php phpinfo(); ?> und rufen diese Datei dann über Ihren Web-Browser auf (z.B. www.domain.de/info.php).

Eine Anleitung zum Wechsel der PHP-Version finden Sie hier. Falls Sie PHP-FPM nutzen, können Sie diese PHP-Version nicht selbst ändern, wenden Sie sich in diesem Fall bitte an unsere Kundenbetreuung.

Aufgrund möglicher Kompatibilitätsprobleme können wir die standardmäßig genutzte PHP-Version auf dem Webservern nicht einfach auf 5.6 oder 7.0 umstellen, da in diesem Fall bestehende Webseiten unter Umständen nicht mehr funktionieren.

Probleme mit ownCloud und PHP 7

Gegenwärtig gibt es ein Problem mit ownCloud und der aktuellen PHP-Version 7.0.6, die wir am 29.04. auf allen Webservern installiert haben. Betroffen sind ausschließlich Kunden, die PHP 7 manuell über eine .htaccess-Konfigurationsdatei aktiviert haben. Unter PHP 7 wird beim Aufruf der ownCloud-Seite die Fehlermeldung “Interner Serverfehler” angezeigt. Die Ursache ist ein Programmierfehler in ownCloud, der bei den vorigen PHP-Versionen noch keine Auswirkungen hatte.

Die einfachste Lösung für dieses Problem ist die ältere PHP-Version 5.6 zu nutzen, bis der Fehler durch ein ownCloud-Update behoben wird. Eine Anleitung zur Auswahl der PHP-Version finden Sie hier.

Falls Sie weiterhin PHP 7 nutzen möchten, muss die PHP-Datei “request.php” im ownCloud-Unterverzeichnis “lib/private/appframework/http” angepasst werden. Sie können diese Datei per (S)FTP herunterladen oder direkt auf dem Webserver mit einem Texteditor bearbeiten. Suchen Sie nach der Zeile “public function __isset($name) {” und fügen dort die folgenden 3 grün markieren Zeilen hinzu:

    public function __isset($name) {
        if (in_array($name, $this->allowedKeys, true)) {
            return true;
        }
        return isset($this->items['parameters'][$name])
    }

Update vom 02.05.2016: Wir haben bei allen von uns für Kunden installierten Owncloud-Instanzen die entsprechenden Änderungen vorgenommen.

Mögliche Probleme mit Apache 2.4.17 und mod_rewrite

Wir haben am 15.10. ein Update der Webserver-Software Apache von Version 2.4.16 auf 2.4.17 vorgenommen, dabei hat sich eine unerwartete Änderung im Modul mod_rewrite ergeben, die zu Problemen mit einigen PHP-Anwendungen (z.B. Concrete5) führen kann: Die Server-Variable “REDIRECT_URL” wurde von einer relativen URL (z.B. “/kapitel/2/”) auf eine vollständige URL (z.B. “http://www.domain.de/kapitel/2/”) umgestellt, daher könnten PHP-Scripte, die auf diese Variable zurückgreifen, unter Umständen nicht mehr korrekt funktionieren.

Falls Sie seit dem 15.10. Probleme mit Ihrer Webseite festgestellt haben, die zuvor nicht aufgetreten sind, wenden Sie sich bitte an unsere Kundenbetreuung.

PHP 7 RC 3 verfügbar

Ab sofort steht auf unseren Webservern der aktuelle Release Candidate 3 von PHP 7 zu Testzwecken zur Verfügung.

Wir haben dabei eine für viele Kunden interessante Neuerung hinzugefügt, und zwar einen Datei-basierten PHP-Beschleuniger.

Hintergründe zu PHP-Beschleunigern

PHP ist eine Script-Sprache, die vor der Ausführung auf unseren Webservern in für Computer verständlichen Mikroprozessor-Code übersetzt werden muss. PHP nutzt dabei (ähnlich wie Java) eine sogenannte Virtuelle Maschine, es wird also nicht direkt Mikroprozessor-Code erzeugt, sondern zunächst sogenannter Bytecode für eine Virtuelle Maschine (Zend Engine), die daraus dann im nächsten Schritt Mikroprozessor-Code erzeugt und diesen ausführt.
Dieser Bytecode wird jedoch nach der Ausführung eines PHP-Scripts verworfen, und muss jedes Mal zeitaufwändig neu generiert werden. Um dies zu vermeiden gibt es diverse PHP-Beschleuniger wie den PHP-eigenen OpCache, die den Bytecode für spätere Script-Aufrufe optimieren und zwischenspeichern. Allerdings wurde dieser Bytecode bisher immer im Arbeitsspeicher abgelegt, was auf unseren Shared-Hosting-Servern aus technischen Gründen nicht funktioniert, und nur in den Pro-Paketen (bzw. auf Dedicated-Servern) mit PHP-FPM möglich ist.

Seit PHP 7 kann der PHP OpCache den Bytecode optional auch in Dateien speichern, damit lässt er sich auf allen Shared-Hosting-Servern nutzen.

Wir haben anhand einer aktuellen WordPress-Installation die möglichen Performance-Verbesserungen durch OpCache getestet (Mittelwert über 100 Aufrufe):

opcache-file-small

Im Vergleich zu PHP 5.6 ohne OpCache verkürzt sich die PHP-Ausführungszeit für die WordPress-Startseite um Faktor 2, der Datei-OpCache lohnt sich also wirklich.

PHP 7 und OpCache aktivieren

Um PHP 7 mit OpCache zu nutzen, erstellen Sie zunächst ein Verzeichnis für die Bytecode-Dateien auf Ihrem Webserver. Dieses Verzeichnis können Sie beliebig benennen (z.B. “opcache”), und an beliebiger Stelle in Ihrem Benutzerverzeichnis anlegen, die Zugriffsrechte sollten jedoch aus Sicherheitsgründen auf Ihren Benutzeraccount beschränkt werden (chmod 700).

Legen Sie dann im gewünschten Webserver-Verzeichnis eine .htaccess-Datei mit folgendem Inhalt an (bzw. fügen Sie folgende Zeile zu einer bestehenden .htaccess-Datei hinzu):

AddHandler application/x-httpd-php70 .php

Anschließend legen Sie in diesem Verzeichnis eine php.ini-Datei mit folgendem Inhalt an (bzw. fügen die folgenden Zeilen zu einer bestehenden php.ini-Datei hinzu):

zend_extension=/vrmd/webserver/php70/lib/opcache.so
opcache.file_cache=/homepages/u12345/opcache
opcache.file_cache_only=1

Ersetzen Sie dabei “/homepages/u12345/opcache” durch den vollständigen Pfad zu Ihrem Bytecode-Verzeichnis. Beachten Sie bitte, dass php.ini-Dateien nur in dem Verzeichnis gelten, wo auch das aufgerufene PHP-Script liegt, eventuell müssen Sie diese Datei daher noch in weitere Unterverzeichnisse kopieren.

Hinweis

Bitte beachten Sie, dass sich PHP 7 noch in der Entwicklungsphase befindet, es können noch diverse kleinere Fehler und Probleme auftreten. Sie sollten PHP 7 daher besser noch nicht für kritische Webseiten einsetzen.