Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 12-Dec-2005
< Voriger Tag   Nächster Tag >

Montag, 12. Dezember 2005

PHP: PHP 5 und PHP 4 auf einem Server

Mit der Veröffentlichung von PHP 5.1.1 habe ich auf meinem Entwicklungsrechner die installierten PHP-Versionen aufgeräumt und neu organisiert.

Damit PHP 4 und PHP 5 gleichzeitig als Modul auf dem Server laufen gibt es zwei Apache als Webserver, die via mod_proxy miteinander verbunden sind wie es John Coggeshall in "Running PHP 4 and PHP 5 Concurrently" beschreibt und somit von außen aus wie ein Server wirken.

Vorne läuft derzeit der Apache mit PHP 4 auf Port 80 und dahinter der mit PHP 5 auf Port 85. Weitergeleitet werden die Aufrufe per ProxyPass und für den umgekehrten Weg mit ProxyPassReverse.

<VirtualHost 192.168.0.2>

Servername legs

DocumentRoot /dev/null

ProxyPass / http://php5:85/
ProxyPassReverse / http://php5:85/

</VirtualHost>

ProxyPassReverse sorgt dafür, dass Umleitungen (Redirection) per Loaction-Header vom hinteren Server wieder auf dem Namen des vorderen Servers umgenannt werden aus: Location: http://php5:85/phpinfo.php wird dadurch Location: http://legs/phpinfo.php

So funktionieren auch Umleitungen weiterhin transparent, die z.B. für Logins benutzt werden.

PHP-Version wechseln

Die einzelnen PHP-Versionen sind per configure --prefix /usr/local/php-5.1.1 in jeweils eigene Verzeichnisse compiliert. Zum Wechseln der PHP-Version kopiere ich das passende libphp4.so- bzw. libphp5.so-Modul ins Apache-Verzeichnis und starte den Server neu.

Zum Start von der Shell gibt es passende alias-Einträge für die einzelnen PHP-Versionen wie alias php511=/usr/local/php-5.1.1/bin/php.

PEAR mit Pfad auf .pearrc-Konfiguration

Beim Installieren von neuen PEAR-Komponenten hatte ich in der Vergangenheit schon einige Male das falsche PHP-Verzeichnis erwischt.

PEAR liest die Konfiguration aus der Datei des Benutzers .pearrc-Datei, der des Systems /etc/pear.conf und der eingebauten Voreinstellung.

Die .pearrc-Datei wird geschrieben, wenn mit config-set Einstellungen geändert werden. Dabei werden alle Einstellungen gespeichert also auch der Pfad zur Installation der PEAR-Pakete. Beim Einstellen des Proxy-Servers hatte ich so einen Installtionspfad gespeichert, der dann später auch für alle anderen Installationen benutzt wurde, obwohl ich eigentlich inzwischen eine ganz andere PHP-Version meinte (pear hatte ich mit /usr/local/php-4.3.10/bin/pear aufgerufen). Damit mir das nun nicht mehr passiert gibt es nun für jedes alias php511=... ein passendes alias pear511="/local/php-5.1.1/bin/pear -c ~/pearrc-5.1.1". Die -c-Option legt dabei die Konfigurationsdatei des Benutzers fest und ist damit nun auch für die pear-Aufrufe immer eindeutig.

Weiterleitung mit mod_rewrite

Neben der oben beschriebenen Weiterleitung mit ProxyPass kann auch über die RewriteRules des mod_rewrite-Moduls auf den hinteren Server umgeleitet werden. Dazu beginnt das Ziel mit http:// und es wird das P-Flag gesetzt.

RewriteRule ^/infoPHP5\.html$ http://php5:85/phpinfo.php [P]

Sofern für den Server zusätzlich ProxyPassReverse gesetzt ist funktioniert auch bei dieser Art der Weiterleitung das transparente Umbennen der Umleitungen.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<Dezember 2005 >
   01020304
05060708091011
12131415161718
19202122232425
262728293031 

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 12-Dec-2005
(C) 2000-2018 by Sven Drieling