PHP 5.6 unter Debian Wheezy installieren

Vorab: Macht nicht den gleichen Fehler wie ich und versucht PHP 5.6 über Unstable Repositories a la apt-get -t sid install php5 zu installieren nachdem Ihr die „sid“ Quellen in die /etc/apt/sources.list eingetragen habt. Das sieht zwar nach der Installation erstmal ganz gut aus, klappt auch, macht Euch aber an vielen Stellen die Abhängigkeiten der Pakete kaputt. Am Ende habt Ihr an vielen Stellen soganannte „dependancy conflicts“.

php

Inhalt


PHP 5.6 unter Wheezy installieren

Die bessere Variante: Nutzt Dotdeb für die Installation von aktuellen PHP Versionen. Mit Dotdeb habt Ihr die aktuellen PHP Versionen quasi genauso schnell als würdet Ihr diese selbst manuell herunterladen und installieren. Die derzeit aktuelle Version PHP 5.6.7 beispielsweise wurde von PHP am 19.03.2015 released und ist von Dotdeb bereits einen Tag später am 20.03.2015 über apt installierbar gewesen.

Die Integration von Dotdeb ist sehr simpel: Man fügt Dotdeb als weitere Paket-Quelle zu apt hinzu und kann danach die Updates wie bisher auch über apt einspielen.

Eine genaue Dokumentation ist auf der Dotdeb Instructions Seite (englisch) zu finden. Hier einmal die Befehle in Schnellform:

## become root
su

## add dotdeb to apt sources list
echo 'deb http://packages.dotdeb.org wheezy-php56 all' > /etc/apt/sources.list.d/dotdeb.list
echo 'deb-src http://packages.dotdeb.org wheezy-php56 all' >> /etc/apt/sources.list.d/dotdeb.list

## make sure apt accepts https transport
apt-get install apt-transport-https

## add dotdeb key for apt
curl http://www.dotdeb.org/dotdeb.gpg | apt-key add -

## get package list from sources incl. new set source dotdeb
apt-get update

## update php5
apt-get install php5

So, damit läuft PHP 5.6 schon. Nun gibt es noch ein paar Dinge, die Ihr ggf. noch berücksichtigen müsst, je nachdem was Ihr an Zusatzpaketen benutzt oder wie Ihr PHP einsetzt. Wir kommen – wie in PHP so oft – zum Thema „backward incompatible changes“:


PHP 5.6 und APC

Wenn Ihr APC nutzt, dann ist Euch sicherlich aufgefallen, dass das Paket php5-apc bei der Installation von PHP 5.6 entfernt wurde. Das hat den Hintergrund, dass PHP seit 5.5 standardmäßig auf Optimizer+ setzt um den PHP Quelltext nicht bei jedem Aufruf neu interpretieren zu müssen (Bytecode-Caching). Wenn Ihr APC also nur zu diesem Zweck genutzt habt, dann braucht Ihr auch nichts weiter zu tun.

Wenn Ihr allerdings – wie ich – APC auch als User-Cache genutzt habt, also um mit PHP teils auffändig erzeugte Daten über APC mittels apc_exists(), apc_fetch() und apc_store() zu speichern, prüfen und wieder auszulesen, dann wird auch alles wieder gut, einfach das Paket php5-apcu installieren:

sudo apt-get install php5-apcu

Dieses Paket ist so geschrieben, dass Ihr die genannten apc Funktionen weiter nutzen könnt und keine Skripte anpassen müsst. Klappt super!


PHP 5.6 und selbst ausgestellte SSL Zertifikate

Ein weiterer Stolperstein könnte sein, dass einige Eurer (Streaming) Verbindungen plötzlich mit dieser Fehlermeldung quittiert werden:

14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in […]

Hintergrund ist, dass seit PHP 5.6 standardmäßig alle Zertifikate beim Verbindungsaufbau geprüft werden (siehe OpenSSL Changes in PHP 5.6.x):

All encrypted client streams now enable peer verification by default. By default, this will use OpenSSL’s default CA bundle to verify the peer certificate. In most cases, no changes will need to be made to communicate with servers with valid SSL certificates, as distributors generally configure OpenSSL to use known good CA bundles.

Natürlich ist dieser Schritt irgendwo begrüßenswert. Jedoch werden damit selbst erstellte Zertifikate nicht mehr verifiziert und somit wird dann auch keine Verbindung aufgebaut.

Ein Ausweg wäre es beispielsweise den folgenden Code global in Euer Projekt einzubinden:

$default_opts = [
    'ssl' => [
        'allow_self_signed' => true,
        'verify_peer' => true,
        'verify_peer_name' => false,
    ],
];
stream_context_set_default($default_opts);

Damit sollten global selbst signierte Zertifikate erlaubt sein. Eine Alternative wäre diese Optionen immer direkt beim Verbindungsaufbau mit anzugeben.


Fazit

PHP 5.6 ist (gefühlt) schneller als das in Debian Wheezy (7.8) standardmäßig „verbaute“ PHP 5.4, macht aber unter Umständen – wie bei fast jedem größer PHP Update – ggf. einige weitere Anpassungen an Euren Skripten und Projekten nötig.

Sinnvoll ist es, sich die Migrationsseiten von 5.5 auf 5.6 anzuschauen, da wir ja direkt von PHP 5.4 auf 5.6 „gesprungen“ sind.

Besonders interessant finde ich ja auch immer die „neuen Features“ der jeweiligen neuen Versionen, da diese im Endeffekt darüber entscheiden sollten, ob sich ein Update überhaupt (für Euch) lohnt.

Ich hoffe der Beitrag konnte Euch helfen. Hinterlasst mir gerne Euer Feedback ;)

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte beachte die Hinweise zum Datenschutz