LAMP Server: PHP
Soweit Apache, kommen wir zu PHP. Auch hier gehen wir wieder den üblichen Weg über configure, make, make install mit der einen oder anderen schnuckeligen Option … Zuerst wechseln wir wieder in Sourcen:
cd /mnt/installdisc/src/php-4.2.3
Das configure stoßen wir mittels
CFLAGS=-'O2 -I /usr/local/src/openssl-096g -DEAPI' LDFLAGS=-s ./configure --prefix=/usr/local/php --with-apxs=/usr/local/httpd/bin/apxs --with-configure-file-path=/etc/httpd/php --with-mysql --enable-safe-mode
an. CFLAGS und LDFLAGS hatten wir ja bereits beim Apache. –prefix ist auch wieder klar, neu hingegen ist die Option –with-apxs. Hiermit geben wir das APXS Verzeichnis vom Apache an, welches ein Unterverzeichnis unserer Apache Installation sein sollte. Mittels -I …….. wird das OpenSSL Sourcen Verzeichnis angegeben um auch SSL im PHP zu Verfügung zu haben. Die Option –with-configure-file-path wird gibt an, wo die php.ini erwartet wird, günstig ist hier das gleiche Verzeichnis wo auch die httpd.conf steht. So hat man alle relevanten Konfigurationsdateien immer auf einen Blick verfügbar. Natürlich soll PHP auch MySQL unterstützen, daher benötigen wir auch die Option –with-mysql. Die Option –enable-safe-mode können wir dann später noch in der php.ini beeinflussen, vorerst sollte sie aber gesetzt sein. Später dazu mehr … Um später einmal XML nutzen zu können, kann man noch die Option –with-xml angeben, ist aber im Moment nicht ganz so wichtig.
Nun dürfen wir endlich mittels
make
make install
lles weitere in die Wege leiten. Abschliesend bleibt noch, die php.ini dorthin zu kopieren, wo sie erwartet wird. Im Sourcen Paket von PHP wird bereits eine php.ini-dist mitgeliefert, welche nur noch in das entsprechende Verzeichnis kopiert und dort nach php.ini umbenannt werden muss.
In der php.ini sollten noch einige Sachen angepasst werden werden, da man sonst eventuell einige böse Überraschungen erlebt
Wie bereits vorhin erwähnt gibt es auch in der php.ini eine Option für den SAFE MODE. Dieser sollte auf ON stehen. Stünde dieser Parameter auf off, können User mittels einer geeigneten php Datei , andere Dateien auf den Server uploaden und diese auf dem Server ausführen, was verherrende Folgen haben würde. Es liegt am PHP Programmierer eine anderen Weg zu finden um dennoch kontrollierte Uploads zu zulassen. Einen Weg zeigt das letzte Tutorial von mir zu CodeCharge auf.
Die andere Sache betrifft die Option register_globals. Diese ist ebenfalls seit neuestem genau wie safe-mode auf off gesetzt. Leider muss man um damit arbeiten zu können meist seine kompletten php Files umschreiben und anpassen, da man dafür aber kaum Zeit , setze ich diese Option meist wieder auf ON. Die Option soll eine Sicherheitslücke schließen. Und zwar ist es ja bekanntlich möglich Variablen mittels eines URLs zu übermitteln. Wenn man nun eine schlampige Passwortprüfung vornimmt ist es leicht möglich mittels in etwa folgendem URL diese Prüfung außer Kraft zu setzen: http://www.yourdomain.de/test.php?id=15&passwd_check=true. Wird nun im Script nur mehr auf True oder False gecheckt, erhält der Angreifer Zugriff, egal ob er das Passwort kennt oder nicht, er hat es ja per URL bereits auf True gesetzt. Es liegt also an jedem selbst, diese Fallen zu umgehen. Neue Scripte sollte man natürlich gleich mit den neuen globalen Variablen programmieren, so das man irgendwann diese Option sinnvoll einsetzen kann …
Leider wird das PHP nun in den wenigsten Fällen bereits komplett funktionieren. Zuerst müssen wir noch die httpd.conf anpassen. Dort sollte es eine Zeile folgenden Typs geben
#AddType application/x-httpd-php .php
Hier entfernen wir ganz einfach das Kommentarzeichen oder schreiben die Zeile neu unter die anderen Dateitypen, sollte sie nicht bereits exitieren. Dadurch wird dem Apache mitgeteilt, dass er gefälligst *.php Dateien mittels PHP Interpreter parsen soll und sie nicht als normale Textdatei übertragen … Statt .php könnt ihr an dieser Stelle natürlich auch andere Dateitypen zum PHP Parsen angeben, .php ist aber sicher das übliche.
Weiter geht’s in der httpd.conf. Etwas weiter unten gibt es die Verzeichnis Index Optionen, hier sollte bereits eine index.html vorgemerkt sein. Damit nun auch PHP in den Genuss kommt als Index Datei arbeiten zu dürfen, erweitert man die Zeile einfach in etwa wie folgt.
<IfModule mod_dir.c>
DirectoryIndex index.php index.htm index.html
</IfModule>
Nun wird zuerst nach der index.php in einem Verzeichnis gesucht, existiert die nicht, dann die index.html usw.
Nun können wir den Apache neu starten. Mittels
/usr/local/apache/bin/apachectl startssl
wird dem Apache mitgeteilt, das er mit den SSL Optionen starten soll. Nun können wir testen ob die Installation funktioniert hat. Dazu erstellen wir eine einfache PHP Datei mit folgendem Inhalt:
<?php
phpinfo();
?>
Das ganze speichern wir im Wurzelverzeichnis des WebServers unter dem Namen info.php. Dann können wir diese Datei im Browser aufrufen und sollten eine Webseite ähnlich dieser vorfinden. Hier stehen alle Optionen die wir eventuell irgendwann einmal benötigen könnten, ohne das wir erst lange suchen müssen. Da diese Datei sehr mitteilsam ist, sollten wir sie nach Erfolg entweder löschen oder anderweitig dem Zugriff der Surfer und/oder User entziehen, htaccess ist dazu sicher ein guter Weg. Herzlichen Glückwunsch, dein LAMP (eigentlich LAMPS) Server funktioniert nun und ich kann mich getrost zurücklehnen und den Abend geniesen.