PHP 4 & PHP 5 auf Debian 4(etch) installieren

Feb 19th, 2009 | By roland | Category: Debian

php45-logo

Lä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:

  1. In /etc/apt die sources.list mit 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.

  2. apt-get update ausfü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.

  3. Nun kann das php5-cgi Paket, mit dem Befehl apt-get install php5-cgi installiert werden.
  4. In die Datei /etc/apache2/apache2.conf müssen folgende Zeilen eingefügt werden:
    # PHP5 CGI Integration
    ScriptAlias /php5-cgi /usr/lib/cgi-bin/php5
    Action php5-cgi /php5-cgi
  5. 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.de ein.
    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.conf

       ServerName 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>
    
  6. Ist dies alles getan, muss der Apache Prozess die neue Konfiguration mittels des Befehls: /etc/init.d/apache2 reload einlesen. Das wars ;-)
  7. Die Konfiguration kann nun mittels des PHP Kommandos phpinfo() überprüft werden. Dazu eine Datei mit dem Namen phpinfo.php und 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 von phpinfo.php:

    <?php
        phpinfo();
    ?>
    
  8. 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-xmlrpc instaliert.
    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 php5 in 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 Datei phpinfo.php überprüfen. Die installierten Module sollten nun auf der Statusseite von PHP5 aufgelistet sein.

  9. Das wars! PHP5 ist nun installiert und so weit Lauffähig. ;-)

Eure Erfahrung bitte in den Kommentaren posten.

Tags: , , , , , , , ,

2 comments
Leave a comment »

  1. 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

  2. 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 ;-)

Leave Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes