rob-schulze.de > Informatik > Tutorials > Apache > PHP als CGI mit suPHP

Auf den folgenden Seiten möchte ich dokumentieren, wie ich auf einen 1&1 Rootserver den PHP Unterstützung installiert habe. Ich gehen natürlich davon aus, dass PHP noch nicht installiert ist.
Wenn jemand Fragen/Änderungswünsche/Anregungen hat, dann bitte Mail an rob(AT)rob-schulze.de

Hier sind die zu installierenden Pakete:


1. PHP konfigurieren und installieren

Erstmal, so wie immer, runterladen und entpacken:
# wget http://php3.de/do_download.php?download_file=php-4.2.2.tar.gz
# tar -xzf php-4.2.2.tar.gz
# cd php-4.2.2
Nun muss erstmal ein bisschen konfiguriert werden.
Um MySQL-Unterstützung einer installierten MySQL Umgebung einzubinden, muss erst der Basispfad von MySQL herausbekommen werden.
Bei mir ist der Basispfad /usr/local/mysql.

Achtung: sollte mal eine Konfigurationsoption hier geändert werden, nachdem man schon einmal PHP kompiliert hat, muss der Quellbaum erst bereiningt werden:
# make distclean
Andere Sachen müssen erstmal nicht in Erfahrung gebracht werden, nun kann man los legen.
# ./configure \
        --enable-force-cgi-redirect \
        --enable-discard-path \
        --enable-magic-quotes \

        --enable-calendar \

        --with-gdbm \
        --with-ndbm \
        --with-bdm \
        --with-mysql=/usr/local/mysql \

        --with-gd \
        --disable-xml \

        --enable-sysvsem \
        --enable-sysvshm \
        --enable-shmop \
        --enable-mhash \

        --enable-memory-limit \
Nun folgt die letzliche Kompilation und Installation:
# make
# make install

So, PHP ist nun (wenn alles fehlerfrei lief) erstmal unter /usr/local installiert.
Die Konfigurationsdatei php.ini gefindet sich in /usr/local/lib.
und nun folgt...

2. suPHP konfigurieren und installieren:

Wieder erstmal runterladen und entpacken:
# wget http://www.suphp.org/download/suphp-0.2.tar.gz
# tar -xzf suphp-0.2.tar.gz
# cd suphp
Nun muss die Datei config.h angepasst werden. Hier wird der Apache-User, der Pfad zum PHP-Binary und das Logfile festgelegt.
Bei mir sieht das so aus:
#define OPT_APACHE_USER "www"
#define OPT_PATH_TO_PHP "/usr/bin/php"
#define OPT_LOGFILE     "/usr/local/apache/logs/suphp.log"
Ok, das war es dann mit der Datei config.h.
Nun folgt die Kompilation und Installation:
# make
# make install
# chmod u+s /usr/sbin/suphp
Damit der Indianer (Apache) das suPHP-Modul auch benutzt, muss man es im Apache einbinden.
Dazu benötigt man das Tool apxs, welches bei der Apache-Installation mit installiert wird.
Ich gehe jetzt mal davon aus, dass apxs unter /usr/local/apache/bin zu finden ist. Wenn dies nicht der Fall ist, einfach mal mittels
# find / -name apxs
suchen.
Also, nun zur Einbindung:
# cd /usr/src/suphp/apache
# /usr/local/apache/bin/apxs -a -i -c mod_suphp.c
Nun, als letzter Schritt, muss nur noch die httpd.conf angepasst werden.
Dazu öffnet man die Datei (meist /etc/httpd/httpd.conf) in einem Editor und sucht nach Einträgen wie "AddHandler". Dann fügt man an dieser Stelle eine neue Zeile ein:
AddHandler x-httpd-php .php
Das war es.