PHP 4 & PHP 5 auf Debian 4(etch) installieren
Feb 19th, 2009 | By roland | Category: DebianLäuft ein Webserver schon einige Zeit und ist wie in meinem Fall schon des öfteren von einer früheren Version von Debian upgedatet worden, ist vielfach PHP in der Version 4 als Modul für den Apache Webserver installiert. Neue Software, wie zum Beispiel Typo3 Version 4.2 benötigt mittlerweile aber PHP in der Version 5.2. Was tun? PHP4 deinstalieren und PHP 5 instalieren ist aufgrund der Rückwertskompatipilität oft nicht so einfach möglich. Eine Lösung bei der beide Versionen im Paralellbetrieb laufen ist Notwendig.
Die Lösung ist, PHP5 in der CGI Variante zu instalieren und dem jeweiligen Bereich der Internetseite oder dem VirtuelenHost über eine direktive Mitteilen das .php Dateien über den CGI Wrapper auszuführen sind.
Aber keine Panik! PHP5 parallel zu installieren ist kein Hexenwerk:
- In
/etc/aptdiesources.listmit den aktuellen Debian Mirrors anpassen.# Deutsche Debian Server deb http://ftp.de.debian.org/debian stable main contrib non-free deb http://ftp2.de.debian.org/debian-non-US/ stable/non-US main contrib non-free deb http://ftp2.de.debian.org/debian-security stable/updates main contrib non-free
Eine Liste mit den aktuellen Mirrors findet ihr auf den Debian Seiten.
apt-get updateausführen um die Paketinformationen der neuen Mirrors zu laden (Root Rechte werden benötigt):ServerXX:/etc/apt#su Password: ServerXX:/etc/apt# apt-get update Hole:1 http://ftp2.de.debian.org stable/non-US Release.gpg [197B] Hole:2 http://ftp2.de.debian.org stable/updates Release.gpg [189B] OK http://ftp2.de.debian.org stable/non-US Release OK http://ftp2.de.debian.org stable/updates Release Hole:3 http://ftp.de.debian.org stable Release.gpg [386B] OK http://ftp.de.debian.org stable Release Ign http://ftp2.de.debian.org stable/non-US/main Packages/DiffIndex Ign http://ftp2.de.debian.org stable/non-US/contrib Packages/DiffIndex Ign http://ftp2.de.debian.org stable/non-US/non-free Packages/DiffIndex Ign http://ftp2.de.debian.org stable/updates/main Packages/DiffIndex Ign http://ftp.de.debian.org stable/main Packages/DiffIndex Ign http://ftp2.de.debian.org stable/updates/contrib Packages/DiffIndex Ign http://ftp2.de.debian.org stable/updates/non-free Packages/DiffIndex Ign http://ftp2.de.debian.org stable/non-US/main Packages Ign http://ftp2.de.debian.org stable/non-US/contrib Packages Ign http://ftp.de.debian.org stable/contrib Packages/DiffIndex Ign http://ftp.de.debian.org stable/non-free Packages/DiffIndex OK http://ftp.de.debian.org stable/main Packages Ign http://ftp2.de.debian.org stable/non-US/non-free Packages OK http://ftp2.de.debian.org stable/updates/main Packages OK http://ftp.de.debian.org stable/contrib Packages OK http://ftp2.de.debian.org stable/updates/contrib Packages OK http://ftp.de.debian.org stable/non-free Packages OK http://ftp2.de.debian.org stable/updates/non-free Packages OK http://ftp2.de.debian.org stable/non-US/main Packages OK http://ftp2.de.debian.org stable/non-US/contrib Packages OK http://ftp2.de.debian.org stable/non-US/non-free Packages Es wurden 3B in 0s geholt (4B/s) Paketlisten werden gelesen... Fertig ServerXX:/etc/apt#
Sollte eine Fehlermeldung bei diesem Prozess auftreten, liegt dies meist daran, das der PGP Schlüssel zur Überprüfung der Pakete nicht bekannt ist. Sollte dies der Fall sein, lest bitte hier weiter.
- Nun kann das
php5-cgiPaket, mit dem Befehlapt-get install php5-cgiinstalliert werden. - In die Datei
/etc/apache2/apache2.confmüssen folgende Zeilen eingefügt werden:# PHP5 CGI Integration ScriptAlias /php5-cgi /usr/lib/cgi-bin/php5 Action php5-cgi /php5-cgi
- Jetzt ist es an der Zeit PHP5 für einen bestimmten Bereich oder einem VirtuellenHost zu aktivieren. Dies geschieht am besten in den Konfigurationsdateien für die verschiedenen Bereiche des Webservers. Hier in diesem Beispiel richte ich PHP5 für die Sub-Domain
php5.r-g-b.deein.
Im Verzeichniss/etc/apache2/sites-enabled/liegen die Konfigurationsdateien die der Apache Webserver beim starten einliest. Hier empfiehlt es sich für die verschiedenen VirtuellenHosts je eine Konfiguration ab zu legen.
Beispiel:php5_rgb.confServerName php5.r-g-b.de DocumentRoot /home/rgb/php5test DirectoryIndex index.php index.html index.htm UseCanonicalName off ServerSignature off # Verzeichniss Einstellungen <Directory '/home/rgb/php5test'> AllowOverride All Options +FollowSymLinks -Indexes +Includes +MultiViews AddHandler php5-cgi .php </Directory> - Ist dies alles getan, muss der Apache Prozess die neue Konfiguration mittels des Befehls:
/etc/init.d/apache2 reloadeinlesen. Das wars
- Die Konfiguration kann nun mittels des PHP Kommandos
phpinfo()überprüft werden. Dazu eine Datei mit dem Namenphpinfo.phpund folgendem Inhalt in dem Bereich des Webservers den wir vorher für PHP5 konfiguriert haben ablegen und mittels des Browsers aufrufen. Nun sollte eine Status Seite des PHP Interpreters erscheinen. Diese Informiert uns über die aktuelle Konfiguration von PHP5. Hier ein Beispiel.
Inhalt vonphpinfo.php:<?php phpinfo(); ?> - Da der Interpreter in den meisten Fällen nicht ausreichen sollte, müssen wir noch benötigte Funktionen und Module für PHP5 nachinstallieren. In meinem Fall habe ich die Pakete
php5-mysql, php5-gd, php5-curl, php5-imagick, php5-imap, php5-mcrypt, php5-xcache, php5-xsl und php5-xmlrpcinstaliert.
Der Befehl zum instalieren der Pakete ist immer der selbe. Nur der jeweilige Paketname muss ausgetauscht werden. Um sich einen Überblick über die vorhandenen Pakete zu verschaffen gibt man:apt-cache search php5in der Kommandozeile ein und erhält eine Liste der gefundenen Pakete:ServerXX:/# apt-cache search php5 cakephp - MVC rapid application development framework for PHP jffnms - web-based Network Management System (NMS) for IP networks libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module) libapache2-mod-php5filter - server-side, HTML-embedded scripting language (apache 2 filter module) libgv-php5 - Php5 bindings for graphviz php-auth - PHP PEAR modules for creating an authentication system php-codesniffer - tokenises PHP code and detects violations of a defined set of coding standards php-doc - Documentation for PHP5 php-imlib - PHP Imlib2 Extension php-pear - PEAR - PHP Extension and Application Repository php5 - server-side, HTML-embedded scripting language (metapackage) php5-adodb - Extension optimising ADOdb database abstraction library php5-auth-pam - A PHP5 extension for PAM authentication php5-cgi - server-side, HTML-embedded scripting language (CGI binary) php5-cli - command-line interpreter for the php5 scripting language php5-common - Common files for packages built from the php5 source php5-curl - CURL module for php5 php5-dbg - Debug symbols for PHP5 php5-dev - Files for PHP5 module development php5-ffmpeg - ffmpeg support for php5 php5-gd - GD module for php5 php5-geoip - GeoIP module for php5 php5-gmp - GMP module for php5 php5-gpib - libgpib PHP5 bindings php5-idn - PHP API for the IDNA library php5-imagick - ImageMagick module for php5 php5-imap - IMAP module for php5 php5-interbase - interbase/firebird module for php5 php5-lasso - Library for Liberty Alliance and SAML protocols - PHP 5 bindings php5-ldap - LDAP module for php5 php5-librdf - PHP5 language bindings for the Redland RDF library php5-mapscript - php5-cgi module for MapServer php5-mcrypt - MCrypt module for php5 php5-memcache - memcache extension module for PHP5 php5-mhash - MHASH module for php5 php5-ming - Ming module for php5 php5-mysql - MySQL module for php5 php5-odbc - ODBC module for php5 php5-pgsql - PostgreSQL module for php5 php5-ps - ps module for PHP 5 php5-pspell - pspell module for php5 php5-radius - PECL radius module for PHP 5 php5-recode - recode module for php5 php5-sasl - Cyrus SASL extension for PHP 5 php5-snmp - SNMP module for php5 php5-sqlite - SQLite module for php5 php5-sqlrelay - SQL Relay PHP API php5-suhosin - advanced protection module for php5 php5-sybase - Sybase / MS SQL Server module for php5 php5-symfony1.0 - Open-Source PHP Web Framework php5-tidy - tidy module for php5 php5-uuid - OSSP uuid module for php5 php5-xapian - Xapian search engine interface for PHP5 php5-xcache - Fast, stable PHP opcode cacher php5-xdebug - Xdebug Module for PHP 5 php5-xmlrpc - XML-RPC module for php5 php5-xsl - XSL module for php5 phpunit - Unit testing suite for PHP5 libapache-mod-php5 - server-side, HTML-embedded scripting language (apache 1.3 module) php4-pear - PHP Extension and Application Repository (transitional package) ServerXX:/#
Um ein Paket (in diesem Fall php5-mysql) zu instalieren gibt man folgenden Befehl ein:
apt-get install php5-mysql
Dies wiederholt man solange bis man alle benötigten Pakete installiert hat. Nun kann man die Konfiguration wieder mit der Dateiphpinfo.phpüberprüfen. Die installierten Module sollten nun auf der Statusseite von PHP5 aufgelistet sein. - Das wars! PHP5 ist nun installiert und so weit Lauffähig.
Eure Erfahrung bitte in den Kommentaren posten.











Geschrieben am: März 27th, 2009 - 20:47
Lieber Roland!
Leider hast Du Dich aus meiner Sicht bei der Distribution Version (Etch) geirrt, da es das Paket php5-xdebug erst ab Lenny gibt. Du hast die apt sources.list auf “stable” zeigen lassen und somit die Lenny Pakete installiert.
Die stabile Version von Lenny wurde am 14. Februar 2009 als “stable” released.
lg
Alexander
Geschrieben am: März 31st, 2009 - 00:09
Die Version der Distribution war schon richtig. Allerdings sind mit dem Release von Lenny die deb Resourcen auf stable nicht “richtig”. Statt stable müsste es da etch heisen. Sonst holt man sich Pakete die eigentlich für Lenny gedacht sind. Was aber auch nicht so schlimm ist