PHP6 Testumgebung mit XAMPP
Wenn wir in den letzten Tagen durch unsere Recherche zu Neuerungen in PHP6 und den näheren Details zu einzelnen Features in PHP6 Interesse an PHP6 geweckt haben, wollen wir hier noch einen drauf setzen. Angeregt von der Idee PHP6 in XAMPP zu integrieren ist es außerdem möglich in wenigen Schritten eine Testumgebung mit XAMPP zu schaffen wo PHP5 parallel, also gleichzeitig, mit PHP6 läuft.
Dabei werden in unserem Beispiel die Dateiendungen .php .php5 .php4 .php3 .phtml und .phps ganz normal als PHP5 Scripte geparst und ausgeführt die Dateiendung .php6 wird über den PHP6 Interpreter geschickt.
So hat man die Möglichkeit ganz normal zu entwickeln, aber einige Tests unter PHP6 kann man immer mal wieder durchführen….
Außerdem stelle ich noch eine Lösung vor, wie durch Ändern der Konfiguration jederzeit auch komplett auf PHP6 umgestellt werden kann und als 3. Alternative die Möglichkeit (aus z.B. eclipse heraus) per Script zwischen beiden Versionen dynamisch umzuschalten – aber alles der Reihe nach.
PHP6 parallel zu PHP5 unter XAMPP
Ich gehe davon aus, dass XAMPP bereits in einer aktuellen Version installiert und konfiguriert ist. Der Erste Schritt zu PHP6 Unterstützung ist, die Windows Binaries von PHP6 herunterzuladen. Diese habe ich im XAMPP Ordner entpackt in einen Unterordner namens php6 (z.B. c:\xampp\php6).
Es empfiehlt sich übrigens immer wieder mal einen neuen Snapshot zu laden, PHP stellt täglich einen neuen bereit. Außerdem ist PHP6 alles andere als stabil und derzeit wirklich nur zum testen da.
Nun muss der Apache noch für den parallel Betrieb von PHP6 und PHP5 konfiguriert werden, dazu muss die httpd-xampp.conf Datei editiert werden (liegt unter c:\xampp\apache\conf\extra) Hier müssen folgende Zeilen eingetragen werden:
# PHP 6 Start: AddType application/x-php6 .php6 ScriptAlias /php-cgi/ "C:/xampp/php6/" SetEnv PHPRC "C:/xampp/php6/" AddHandler application/x-php6 .php6 Action application/x-php6 "/php-cgi/php-cgi.exe" AllowOverride None Options +ExecCGI -MultiViews -Indexes Order allow,deny Allow from all #PHP 6 Ende
Als letztes kopiert man die php.ini-recommended Datei (aus C:\xampp\php6) ins selbe Verzeichnis, nennt sie aber php.ini und passt darin die gewünschten Optionen an. Wichtig dabei sind die Stellen:
; Windows: "\path1;\path2" include_path = ".;C:\xampp\php6\PEAR" ; Directory in which the loadable extensions (modules) reside. extension_dir = "C:\xampp\php6\ext" ; Temporary directory for HTTP uploaded files (will use system default if not specified). upload_tmp_dir = "C:\xampp\tmp" session.save_path = "C:\xampp\tmp"
Natürlich lohnt sich ein allgemeiner Blick über die neue php.ini von PHP6, z.B. die neuen Unicode settings und das neue error_reporting mit E_ALL (enthält nun E_STRICT)
Gut, also soweit ist alles fertig. Startet man nun den XAMPP neu und legt zwei Dateien an mit selben Inhalt, (<?php phpinfo(); ?>) und nennt eine phpinfo.php6, die Andere phpinfo.php müssten beim Aufrufen jeweils zwei unterschiedliche Seiten angezeigt werden, eben die phpinfo() Ausgabe einmal von PHP6 einmal von PHP5
XAMPP für PHP6 konfigurieren
Natürlich kann XAMPP auch so konfiguriert werden, dass PHP6 für alle Dateiendungen genutzt wird. Dies kann sinnvoll sein, wenn man bestehende Projekte testen will oder einfach bereits voll auf PHP6 entwickeln möchte.
Dazu kann man die Konfiguration der httpd-xampp.conf Datei folgendermaßen abändern:
#aus: AddHandler application/x-php6 .php6 #wird: AddHandler application/x-php6 .php .php5 .php4 .php3 .phtml .php6
und den folgenden Teil kommentiert man einfach weg (# voran stellen):
LoadModule php5_module "C:/xampp/apache/bin/php5apache2.dll"
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtmloder aber, man kommentiert ebenfalls den oberen Teil aus und fügt folgenden Teil ein, ohne dass man das ganze bisherige PHP6 Zeugs in die Datei schreibt, also man nimmt die orginal XAMPP Datei und kommentiert die drei obigen Zeilen weg und fügt darunter ein:
# PHP 6: LoadModule php6_module "C:/xampp/php6/php6apache2_2.dll" PHPIniDir "C:/xampp/php6" AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml
So kann man dann bei Bedarf jeweils einkommentieren in der Datei, welche PHP Version man nutzen möchte (XAMPP bzw. der Apache muss natürlich jedesmal auch neu gestartet werden nach jedem ändern.)
Also entweder ändert man immer manuell welche Version genutzt werden soll oder arbeitet mit den Dateiendungen .php6 für PHP6 und .php für PHP5.
Kleines Script um XAMPP (z.B. aus eclipse heraus) zwischen PHP5 und PHP6 hin und her zu schalten
Eine weitere Variante ist die orginal httpd-xampp.conf Datei nach httpd-xampp.conf.php5 und die nach der letzten Variante veränderte nach httpd-xampp.conf.php6 zu kopieren.
Nun legt man sich noch folgende 2 Scripte an switch-to-php5.bat und switch-to-php6.bat:
@ECHO OFF copy C:\xampp\apache\conf\extra\httpd-xampp.conf.php5 C:\xampp\apache\conf\extra\httpd-xampp.conf C:\xampp\xampp_restart.exe
@ECHO OFF copy C:\xampp\apache\conf\extra\httpd-xampp.conf.php6 C:\xampp\apache\conf\extra\httpd-xampp.conf C:\xampp\xampp_restart.exe
Jetzt kann man einfach, auch wenn der Apache läuft per Doppelklick auf die jeweilige .bat Datei zwischen PHP6 und PHP5 umschalten, der Apache wird dann automatisch neu gestartet.
Wer mit eclipse arbeitet, der kann sich diese beiden Scripte auch einfach in die external tools von eclipse legen, dann kann man direkt aus eclipse heraus den Apache mit PHP6 bzw. PHP5 neu starten…
Dazu klickt man im eclipse auf Run -> external tools -> external tools. Es öffnet sich eine eclipse Eingabemaske, per Klick auf new launch Konfiguration öffnet man eine leere Maske und trägt zunächst einen Namen ein (z.B. “Umschalten nach PHP5″) darunter trägt man unter Location das Script ein, also C:\xampp\switch-to-php5.bat und als Working Directory nimmt man C:\xampp\. Fertig. Das Gleiche noch für PHP6 und schon kann man aus eclipse heraus zwischen den beiden PHP Versionen umschalten.
Klickt man nun in eclipse noch auf run -> external tools -> organize favorites kann man die beiden neuen Scripte standardmäßig unter run external tool anzeigen lassen.
Hier nun noch einige andere Sammlungen und Beiträge zu PHP6
PHP6 im Weblog von Alex Kanub
Änderungen in PHP 6 auf Visualhype
Know-how: PHP 6: Alt und neu PHP 6 – ein Ausblick
Interview mit Zend-Gründer Zeev Suraski (Teil 1) auf golem.de
Interview mit Zend-Gründer Zeev Suraski (Teil 2) auf golem.de
Einführung zu PHP 6
Bücher zu PHP und auch bereits PHP6
Wenn dir dieser Beitrag gefällt, lade den Autor doch mal zu einem Drink ein ;-)Tags: eclipse, entwicklungsumgebung, PHP, PHP6, webdesign

Kannst du bitte auch ein Tutorial erstellen, wie man es unter Linux, speziell debianbasierende Betriebssysteme installiert? Ich verwende Ubuntu. Wäre echt nett, danke!
hi tim, also rein prinzipiell wüde das unter linux/debian ja genau gleich funktionieren. Die Apache Konfiguration dürfte die Selbe sein, ebenso die php.ini
Statt einer Windows batch Datei musst halt ein linux bash Script anlegen. DLL und EXE Dateien gibts nicht, da must schauen wie die linux äquivalenen heissen….
Da ich kein laufendes XAMPP unter linux habe kann ich nicht nachschauen oder testen ob es da Differenzen gibt, aber probier es doch einfach mal, mit etwas basteln dürfte es nämlich auch unter linux so funktionieren.
Hi,
erst einmal Danke für die tolle Anleitung klappt wunderbar. Jetzt wollte ich gerne 5.3 mit Xampp testen leider klappt das nicht so ganz… Hättest du da vielleicht noch einen Tipp?
Vielen Dank im Voraus!
Hi,
ich habe jetzt auch mal versucht PHP 6 ans laufen zu kriegen nach diesem Tutorial aber ich habe das Problem, das wenn ich den Apache so starten will, bekomme ich die Meldung:
Syntax error on line 106 of C:/Programme/xampp/apache/conf/extra/httpd-xampp.conf:
AllowOverride not allowed here
Wenn ich die Config so ändere:
# PHP 6 Start:
AddType application/x-php6 .php6
ScriptAlias /php-cgi/ “C:/Programme/xampp/php6/”
SetEnv PHPRC “C:/Programme/xampp/php6/”
AddHandler application/x-php6 .php6
Action application/x-php6 “/php-cgi/php-cgi.exe”
#AllowOverride None
Options +ExecCGI -MultiViews -Indexes
#Order allow,deny
#Allow from all
#PHP 6 Ende
startet das gute Stück zwar aber sobald ich die phpinfo.php6 aufrufe bekomme ich ein “Zugriff verweigert!” von IE 7.
PHP 5 läuft normal.
Kann mir da jemand helfen?