Da PHP 5.5 mittlerweile seit fast einem Jahr auf dem Markt ist und erhebliche Performance und Security bringt, sollte man sich mit einem Update von älteren PHP Versionen auseinandersetzen. So funktioniert die Installation bzw. ein Upgrade unter Debian Wheezy.
Warum sollte ich PHP 5.5 installieren?
PHP 5.4.0 erschien am 01 März 2012, was schon ziemlich lange her ist. Allerdings wird 5.4 nach wie vor supported und es werden weiterhin Bugfixes und Securityupdates zur Verfügung gestellt.
PHP 5.5.0 erschien am 20. Juni 2013, und ist mittlerweile bei Version 5.5.8 angekommen. Eine der größten Neuerungen ist wohl die Integration des Bytecode-Cache Zend OPcache (ZendOptimizer+) direkt in PHP 5.5. Die Geschwindigkeit von PHP wurde dadurch erhöht. Es spricht also so einiges dafür, auf die neueste PHP Version upzudaten, was ich mittlerweile auch nur wärmstens empfehlen kann, da wir bereits gute Erfahrungen mit PHP 5.5 gemacht haben.
Installation von PHP 5.5 unter Debian Wheezy
Da ich normalerweise kein großer Fan von Drittrepositories bin und somit mein System immer recht sauber halte, muss ich hier aber über meinen Schatten springen. Die Debian Wheezy Standardrepositories haben derzeit die PHP Version 5.4.4 inkludiert, welche leider etwas veraltet ist.
Die Jungs von Dotdeb sind da sehr viel aktiver und bieten bereits PHP 5.5.8 an und sind im Bereich Webhosting um Jahre schneller als die Debian Maintainer. Dotdeb ist auch der einzige Mirror, welchen ich ausser den Debian Mirrors verwende. Natürlich gäbe es noch den alten Weg, sodass man PHP selbst kompiliert. Aber das ist für Anfänger absolut ungeeignet, deshalb zeige ich hier den Weg über die dotdeb Mirrors.
Um den dotdeb Mirror hinzuzufügen wird die /etc/sources.list…
[bash]vi /etc/apt/sources.list[/bash]…und um folgende zwei Einträge erweitert:
[bash]deb http://packages.dotdeb.org wheezy-php55 alldeb-src http://packages.dotdeb.org wheezy-php55 all[/bash]
Anschließend wird noch der GnuPG key heruntergeladen und importiert.
[bash]wget http://www.dotdeb.org/dotdeb.gpgcat dotdeb.gpg | apt-key add -[/bash]
Ein apt-get update aktualisiert nun die Paketlisten (in diesem Schritt wird noch nicht installiert, keine Sorge)
[bash]apt-get update[/bash]Nun wird die eigentliche PHP 5.5 Installation durchgeführt
[bash]apt-get install php5[/bash]Upgrade von PHP 5.4 auf 5.5 unter Debian Wheezy
Ein Upgrade beinhaltet natürlich immer Risiken, ihr solltet daher euer System auf jeden Fall sichern und vielleicht zusätzlich die Anwendungen vorab mit PHP 5.5 testen, da einige Funktionen deprecated sind. Im ersten Schritt sollten wir uns die derzeitige installierte PHP Version anzeigen lassen:
[bash]php -v[/bash]Ausgabe:
[bash]PHP 5.4.4-14+deb7u7 (cli) (built: Dec 12 2013 08:42:07)Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
[/bash]
Bei einem aktuellen Debian Wheezy System (Stand: Jan 2014) sollte dabei obige Ausgabe erscheinen. Die verwendete PHP Version ist also 5.4.4-14. Wollt ihr nun direkt ein Upgrade von PHP 5.4 auf 5.5 durchführen, so reicht es ebenfalls, oben genannte Schritte (Siehe installation), auszuführen. Paketabhängigkeiten werden natürlich sauber aufgelöst und somit werden auch alle verwendeten PHP Extensions auf den neuesten Stand gebracht bzw. mit installiert. Ein einfaches apt-get install php5 reicht zum Upgrade:
[bash]apt-get install php5[/bash]Neue Version anzeigen lassen:
[bash]php -v[/bash]Ausgabe:
[bash]PHP 5.5.8-1~dotdeb.1 (cli) (built: Jan 12 2014 02:22:36)Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies
[/bash]
Tipp: Wenn ihr die php5-dev Libraries verwendet bzw. benötig, so solltet ihr diese ebenfalls installieren (apt-get install php5-dev)
Es empfiehlt sich nach dem Update die Apache Erros Logs durchzusehen, ob irgendwelche Probleme auftreten. [sam id=“2″ codes=“true“]
Downgrade von PHP 5.5 auf PHP 5.4
Falls Probleme auftreten ist es ratsam wieder auf die alte PHP 5.4 Version zu gehen. Dazu werden zuerst die dotdeb mirros aus /etc/apt/sources.list wieder entfernt oder auskommentiert. Anschließend müssen die installierten dotdeb Pakete entfernt werden. Mit folgendem Befehl werden alle dotdeb Pakete aufgelistet:
[bash]dpkg -l |grep dotdeb[/bash]Die Ausgabe zeigt in meinem Fall folgendes an:
[bash]ii libapache2-mod-php5 5.5.8-1~dotdeb.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module)ii php5 5.5.8-1~dotdeb.1 all server-side, HTML-embedded scripting language (metapackage)
ii php5-cli 5.5.8-1~dotdeb.1 amd64 command-line interpreter for the php5 scripting language
ii php5-common 5.5.8-1~dotdeb.1 amd64 Common files for packages built from the php5 source
ii php5-curl 5.5.8-1~dotdeb.1 amd64 CURL module for php5
ii php5-gd 5.5.8-1~dotdeb.1 amd64 GD module for php5
ii php5-mysql 5.5.8-1~dotdeb.1 amd64 MySQL module for php5
[/bash]
Diese Module werden nun alle entfernt:
[bash]apt-get remove libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-mysql[/bash]Jetzt werden die entsprechenden Pakete (welche ihr benötigt) wieder von den Debian Standard Mirrors installiert:
[bash]apt-get updateapt-get install libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-mysql[/bash]
PHPinfo für PHP 5.5 anzeigen lassen:
Um die Einstellungen für PHP zu überprüfen, ist es ratsam eine phpinfo Datei am Webserver anzulegen. zb: phpinfo.php
[bash]vi /var/www/sysadminslife.com/phpinfo.php[/bash]Mit folgendem Inhalt:
[bash]<?php phpinfo(); ?>[/bash]Wenn die Datei dann im Browser aufgerufen wird sollte sie eine ähnliche Ausgabe wie diese anzeigen:
Hi,
habe hier nach der Anleitung geupgaded, bekomme aber nen 500er Internal Server Error. Kannst du mir helfen? Denn unter 5.4 lief alles problemlos…..
Schau doch mal in deine Logs… Wahrscheinlich hat sich eine Funktion geändert oder ist weggefallen 😉
Hi,
ich stöbere schon länger in deinem Blog und finde den ein oder anderen Artikel durchaus hilfreich 😀
Ich habe mal eine Frage zur Benutzertrennung:
Ich hab auf meinem Server ca. 15 verschiedene Hosts. Die sollen auch ja keinen Zugriff aufeinander bekommen!
Zur Zeit habe ich mpm-itk am laufen, aber das ist nicht so optimal…
Würde es vielleicht schon reichen alles über suPHP zu machen? Oder gibt das Ärger mit den Berechtigungen bei „normalen“ Dateien ohne php?
Vielleicht kannst du dazu ja mal einen Artikel erstellen 🙂
VG
Hi
ich bin nach Anleitung vorgegangen. Habe erst auf Version 5.4 aktualisiert, was problemlos geklappt habt.
Nach Eingabe: apt-get install php5 erhalte ich bei Version 5.5 allerdings folgende Meldung:
Some packages could not be installed…
The following packages have unmet dependencies:
php5 : Depends: libapache2-mod-php5 (>= 5.5.15-1 dotdeb.1) but 5.4.30-1 dotdeb.0 is to be installed
und so weiter mit libapache2-mod-phpfilter, php5-cgi, php5-fp und php5-common
Kennt Jemand einen Rat?
Gruß Thomas
Hallo,
vielen Dank für die Anleitung. Leider gibt es die Pakete nur für i386 oder AMD64 Systeme.
Für andere Systeme gibt es leider keine Updates.
Beim Compilieren der Source-Codes bin ich nicht weit gekommen. Es traten immer irgendwelche Fehler auf. Das System wurde anschließend neu aufgesetzt, um keine Restanten mehr zurücklassen zu müssen.
Hat jemand noch eine andere Quelle für eine Reposito, die auch armhf unterstützt?
Hallo,
habe bei einem frisch aufgesetzten Wheezy gar nicht erst die 5.4 installiert, sondern bin direkt nach obenstehender Anleitung vorgegangen (vielen Dank dafür!). Alles super, php -v wirft mir die 5.5.24 aus, frisch kompliliert diese Woche (am 22.04.).
Für einen weiteren Installationsvorgang sollten allerdings (neben vielen anderen) php5-ps, php5-ming und php5-memcached installiert werden – was zunächst fehlschlug.
Für php5-memcached fand ich dann heraus, dass die „normalen“ dotweb-Repositories eingebunden werden mussten, weil eine Dependency über die Debian-Repositories nicht abgedeckt war. Damit klappte es dann problemlos.
Für die beiden anderen (php5-ps und php5-ming) habe ich leider bis dato keine Lösung, beide melden eine Abhängigkeit von phpapi-20100525, was seinerseits ein php5.4-Archiv ist.
Hat hier jemand eine Idee für mich?
Vielen Dank und
schöne Grüße
ULSC
Hi Patrick,
dank deiner Beschreibung hat meine stundenlange Suche nun ein Ende – und das Problem ist gelöst. Der PHP Versionscheck während der Roundcubeinstallation, brachte mich schon etwas in Rage.
Dir wünsche ich weiterhin viel Spaß beim Bloggen von (ähnlichen) hilfreichen, rettenden Anleitungen. Vor allem sind sie schön kurz und beschränken sich auf’s Wesentliche, wie Admins eben sind ;o)