Suchen
Inside Wiki
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > phpforum.de Wiki > phpforum.de Wiki

PHP Wiki Dieses Wiki sammelt Lösungen, zu Problemen, welche immer wieder im Forum auftauchen.

 
 
Artikel-Optionen Ansicht
  #1  

Standard XAMPP Aufwerten

 

Tutorials - Inhalte

Multiple PHP Versionen unter XAMPP


Webentwickler sollten ihre Programme unter den verschiedensten Bedingungen testen. Von daher ist es durchaus hilfreich schnell zwischen den PHP Versionen umschalten zu können, ohne den Apache dauernd neu starten zu müssen. Nach der Durcharbeit dieses Tutorials haben wir ein System mit vielen PHP Versionen welche im CGI Modus laufen. Per .htaccess kann man dann die PHP Version für jeden Ordner getrennt festlegen.

Grundinstallation


Zuerst brauchen wir den Apache + MySQL + PHP(werden wir später auswechseln). Dazu suchen wir uns eine Festplatten Partiton mit reichlich Platz. Im folgenden gehe ich davon aus, dass wir den XAMPP in H:\Programme\xampp installieren.
  1. Das Installationspaket von Apachefriends saugen
  2. Installieren
  3. Ausgiebig testen
Alles klar, Schritt 1 geschafft.


Entfernen der Sorgenkinder


Damit wir später keine Sorgen bekommen, sollten wir ein paar Dateien aus dem XAMPP Ordner entfernen.
  • H:\Programme\xampp\php-switch.bat
  • H:\Programme\xampp\setup_xampp.bat
Beide sind nach unserem Umbau nicht mehr nötig bzw. sogar problematisch wenn sie aufgerufen werden. Also weg damit.


Beschaffen der gewünschten PHP Versionen

Für unsere manuelle Installation benötigen wir jeweils mindestens das "Win32 binaries" Paket als ZIP. Meist darf es ruhig "Non-thread-safe" sein, da wir es im CGI Modus und nicht als Apache Modul betreiben wollen. Zusätzliche Extensions, falls sie denn benötigt werden, finden wir in den zugehörigen "PECL" Paketen. Diese Erweiterungen müssen bei den "vor PHP5 Versionen" in dem jeweiligen "extensions" Ordner gestopft werden. Unter PHP >= 5 heißt der Ordner dann nur "ext". Einzig die XDebug Erweiterung besteht auf "Thread-safe"!

Manuelle PHP installation


Für jede gewünschte Version legen wir einen Ordner in H:\Programme\xampp an. In diesem Tutorial sind das dann:
  • H:\Programme\xampp\php5_2_6
  • H:\Programme\xampp\php5_3
  • H:\Programme\xampp\php6_0
  • H:\Programme\xampp\php4_4_9
  • H:\Programme\xampp\php3_0_17
In diesen Ordner packen wir dann Kram aus den eben heruntergeladenen ZIP Dateien. In jedem dieser Ordner müssen wir eine php.ini Datei anlegen. Als Vorlage kann man schön die H:\Programme\xampp\apache\bin\php.ini verwenden. Siehe auch PHP konfigurieren: http://www.php.net/manual/de/configuration.php

Wesentliche Anpassungen in den php.ini am Beispiel der Versin 5.2.6:
bzw. empfohlene Einstellungen
Code:
register_globals = Off
include_path = "."
upload_tmp_dir = "H:\Programme\xampp\tmp"
session.save_path = "H:\Programme\xampp\tmp"
soap.wsdl_cache_dir="H:\Programme\xampp\tmp"
extension_dir = "H:\Programme\xampp\php5_2_6\ext\"

; für die Fehlersuche: (E_STRICT nur bei PHP >= 5)
error_reporting  =  E_ALL | E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
error_log = "H:\Programme\xampp\phplogs\php5_2_6.log"
Damit die Loggerei auch später ordendlich klappt, sollten wir einen leeren Ordner H:\Programme\xampp\phplogs anlegen.
Für die anderen Versionen bitte Sinngemäß vorgehen...

Konfiguration des Apache


Hier müssen wir etwas Rücksicht auf die Originale XAMPP Konfiguration nehmen. Aber nicht zu viel :D ...

H:\Programme\xampp\apache\conf\extra\httpd-xampp.conf


Am Anfang finden wir diesen Block:
Code:
<Directory "H:/Programme/xampp/php">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
Den können wir rauswerfen. Oder auch drin lassen, falls die original Installation noch mal wieder hergestellt werden soll.

An der Stelle fügen wir jetzt unsere neuen Verzeichnisse ein.
Was dann folgendermaßen aussehen dürfte/sollte:
Code:
<Directory "H:/Programme/xampp/php6_0">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
<Directory "H:/Programme/xampp/php5_3">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
<Directory "H:/Programme/xampp/php5_2_6">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
<Directory "H:/Programme/xampp/php4_4_9">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
<Directory "H:/Programme/xampp/php3_0_17">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
In der selben Datei, etwas tiefer finden wir den <IfModule mime_module> Block. Darin müssen wir das original php5 Modul abschalten in dem wir ein Kommentarzeichen davor setzen, oder die Zeile rauswerfen. Auch müssen wir unsere neuen PHP Versionen dem Apachen dort bekannt machen.
Der Block sollte dann so aussehen:
Code:
# dieses auskommentieren
#    LoadModule php5_module "H:/Programme/xampp/apache/bin/php5apache2.dll"
#    ScriptAlias /php/ "H:/Programme/xampp/php/"
#    Action application/x-httpd-php "/php/php-cgi.exe"
#    AddType application/x-httpd-php-source .phps
#    AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml


# dieses einfügen: (die default Version als unterste)
    ScriptAlias /php3_0_17/ "H:/Programme/xampp/php3_0_17/"
    Action application/x-httpd-php3_0_17 "/php3_0_17/php.exe"
    AddType application/x-httpd-php3_0_17 .php3_0_17 .php3 .php

    ScriptAlias /php4_4_9/ "H:/Programme/xampp/php4_4_9/"
    Action application/x-httpd-php4_4_9 "/php4_4_9/php.exe"
    AddType application/x-httpd-php4_4_9 .php4_4_9 .php4 .php

    ScriptAlias /php5_3/ "H:/Programme/xampp/php5_3/"
    Action application/x-httpd-php5_3 "/php5_3/php-cgi.exe"
    AddType application/x-httpd-php5_3 .php5_3 .php5 .php

    ScriptAlias /php6_0/ "H:/Programme/xampp/php6_0/"
    Action application/x-httpd-php6_0 "/php6_0/php-cgi.exe"
    AddType application/x-httpd-php6_0 .php6 .php

    ScriptAlias /php5_2_6/ "H:/Programme/xampp/php5_2_6/"
    Action application/x-httpd-php5_2_6 "/php5_2_6/php-cgi.exe"
    AddType application/x-httpd-php5_2_6 .php5_2_6 .php5 .php
Man beachte, dass bei den älteren Versionen (PHP<5) die php.exe eingetregen wird und bei den neueren php-cgi.exe.

H:\Programme\xampp\apache\conf\httpd.conf


Voreinstellung der default PHP Version bitte in diesem Block vornehmen:
Code:
<Directory "H:/Programme/xampp/htdocs">

    # PHP 5.2.6 ist unsere default Version
    AddHandler application/x-httpd-php5_2_6 .php

    Options Indexes FollowSymLinks Includes ExecCGI
   
    # ermöglicht die spätere Umstellung per .htaccess Datei*
    AllowOverride All
   
   
    Order allow,deny
    Allow from all
</Directory>

Installation abgeschlossen


Jetzt ist es an der Zeit den Apache neu zu starten und unsere neu gewonnenen Versionen zu testen und evt. auftretende Startup Errors zu beseitigen.


Datei Endungen


Durch die Wahl der Dateiendung z.B. *.php3, *.php5_3 oder *.php6 kann jetzt der gewünschte Interpreter für jede Datei getrennt festgelegt werden.

.htaccess


So kann die PHP Version für ein Verzeichnis festgelegt werden. Die Endung ist dann jewils nur *.php
Eine Beispiel .htaccess :
Code:
# AddHandler application/x-httpd-php6_0 .php
# AddHandler application/x-httpd-php5_3 .php
# AddHandler application/x-httpd-php5_2_6 .php
AddHandler application/x-httpd-php4_4_9  .php
# AddHandler application/x-httpd-php3_0_17  .php
Hier ist jetzt PHP 4 aktiviert. Der Apache muß nach Änderungen in der .htaccess nicht neu gestartet werden, weil er diese Datei bei jedem Request auswertet.


PHP Erweiterungen


Aktivierung von XDebug


Wie schon oben genannt, funktioniert xdebug nur mit der Thread-Save PHP Version. Den XDebug finden wir auf http://www.xdebug.org/. Von dort fischen wir uns das, zu unserer Version, passende "Windows module". Für PHP 5.2.6 ist das 5.2.5 Modul ebenfalls brauchbar.
Vorschlag:
Kopiere das Modul mit der ellenlangen Versionsbezeichnung unter dem Namen php_xdebug.dll in das jeweilige ext oder extension Verzeichnis, wo wir eben schon den PECL Kram reingeworfen haben.
In der php.ini müssen wir dann alle anderen per zend_extension(_ts) geladenen Erweiterungen abschalten. Und einen weitern Block hinzufügen, welcher dann irgendwie so, oder so ähnlich aussehen sollte:
Code:
[XDebug]
zend_extension_ts = "H:\Programme\xampp\php5_2_6\ext\php_xdebug.dll"
xdebug.default_enable = On
xdebug.extended_info = *complex*
xdebug.max_nesting_level = 100
xdebug.profiler_enable=1
xdebug.profiler_output_dir="H:\Programme\xampp\tmp"
xdebug.remote_autostart = 0
xdebug.remote_enable=true
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_mode = req
xdebug.remote_port = 9000

Nach dieser Änderung sollte uns phpinfo() mit ettlichen Angaben zu XDebug beglücken. Auf http://www.xdebug.org/ findet sich noch ein "Windows Debug client", mit welchem sich jetzt unser Script verbinden können sollte.

Problem mit php_mysql.dll


Wenn diese Erweiterung nicht geladen werden kann fehlt meistens die libmysql.dll. Einfacher Weise können wir uns die aus dem H:\Programme\xampp\apache\bin Ordner herauskopieren und in den jeweiligen PHP Ordner, in dem auch die php.exe oder php-cgi.exe liegt, werfen. Dieses Vorgehen kann für weitere Extensions ebenso notwendig werden.
  • mcrypt
  • sqlite
  • xml
  • und viele weitere

mime.magic


Zumindest in der Win Version haben uns die PHP Entwickler einen Streich gespielt. Man bekommt die Fileinfo Extension erstmal nicht mit mime_content_type() zusammen zum laufen. Die mitgelieferte mime.magic ist leider nicht für beide Versionen brauchbar.

Abhilfe:
Die magic.mime kann diesem Paket entnommen werden: Gnu Win32. Dazu einen Ordner etc auf dem Laufwerk, auf dem die ganzen PHP Versionen installiert sind, anlegen. Also in unserem Beispiel H:\etc. Da rein diese Datei spielen.

Jetzt noch ein php.ini Eintrag und es zuckt.
Code:
[mime_magic]
mime_magic.magicfile = "H:\etc\magic.mime"


browscap


Das selbe Vorgehen wie bei mime.magic. Eine beliebige browscap.ini nach h:\etc kopieren und in den php.ini Dateien eintragen.




Über den Tellerrand: Linux


Prinzipiell das selbe Vorgehen...
Die jeweilige PHP Version kompilieren. Darauf achten, dass diese in VERSCHIEDENEN Verzeichnissen installiert werden. Für den Einsatz in einer Produktivumgebung ist dann das CGI über suPHP Verfahren durchaus brauchbar.

Ergänzende Links zu Linux:
Eine gutes Tutorial für die Installation mehrer PHP Versionen: http://serversupportforum.de/forum/f...hes-howto.html

« Vorheriges Kapitel   Tutorials
  Nächstes Kapitel »

Mitwirkende: combie, Foggy
Erstellt von combie, 13.08.2008 am 15:12
Zuletzt bearbeitet von combie, 28.10.2008 am 10:41
8 Kommentare , 33472 Betrachtungen

Dieser Text steht unter der GNU-Lizenz für freie Dokumentation


 

Lesezeichen

Stichworte
.htaccess, apache, cgi, php extensions, php.ini, php5.3, php6, tutorial, xampp, xdebug

Artikel-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
xampp 1.5.1 malzbaer Datenbanken 14 10.05.2006 21:34
Xampp J/n ? smashio Sonstiges 2 15.02.2006 09:45
Antwortmail aufwerten Toccamonium PHP 4 11.08.2005 04:03
xampp tomby PHP 7 13.07.2005 17:49
xampp alcura Administration 0 17.02.2005 17:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:16 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC