Hi,
da ich gerne rum experimentiere, wollte ich mal versuchen PHP als CGI statt als Modul laufen zu lassen…. es ist gar nicht so schwer….
gucken wir uns das mal an:
Wichtig ist das wir erstmal unseren Ports-Tree aktualisieren…
Dazu brauchen wir zwei kleine Programme:
CVSUP, aber ohne GUI
# cd /usr/ports/net/cvsup-without-gui
# make install clean
Portupgrade
# cd /usr/ports/sysutils/portupgrade
# make install clean
Wenn Ihr die beiden Programme installiert habt, dann kopiert die Datei ports-supfile in deinen Ports-Baum
# cp /usr/share/examples/cvsup/ports-supfile /usr/ports/ports-supfile
In dieser Datei stehen die Informationen, was aus den Ports aktualisiert werden soll.
Nun müssen wir diese Datei noch ein wenig anpassen
# edit /usr/ports/ports-supfile
Nun tragt Ihr statt
*default host=CHANGE_THIS.FreeBSD.org
folgendes ein:
*default host=cvsup.de.FreeBSD.org
nun könnt Ihr die Datei speichern und mit folgenden Befehlen, die aktualisierung starten:
# cvsup /usr/ports/ports-supfile
# cd /usr/ports/
# make fetchindex
# portsdb -u
# pkgdb -F
Als erstes installieren wir den Apache mit ein paar extra Modulen:
# cd /usr/ports/www/apache21
# make WITH_STATIC_MODULES=”rewrite cgid suexec ssl”
# make install
So, das dauert nun eine Weile, wenn die Compelierung und Installation fertig ist, dann machen wir unsere Grundeinstellungen in der httpd.conf
# edit /usr/local/etc/apache/httpd.conf
So, nun können wir den Apache starten und testen mit:
# rehash
# apachectl start
# lynx localhost
Wenn alles klappt, können wir nun mit der Installation von PHP weitermachen….
# cd /usr/ports/www/php4-cgi
# make install clean
So, das geht nun relativ schnell…
Wenn die Installation komplett ist, müssen wir nun noch ein paar Sachen in der httpd.conf ändern:
# edit /usr/local/etc/apache/httpd.conf
Fügt nun das folgende in den Bereichen der < Directory> Regeln ein:
< Directory /Dein_Pfad_Zu_Deinem_Document_Root/cgi/>
Options ExecCGI
AllowOverride None
< /Directory>
Das definiert ein CGI-Verzeichnis in dem die Scripte ausgeführt werden dürfen.
ScriptAlias /cgi/ /Dein_Pfad_Zu_Deinem_Document_Root/cgi/
Der ScriptAlias erlaubt es Dir, eine Verzeichnis in einer URL anzugeben, welches sich nicht unbedingt physikalich auch dort befindet… es routet die Eingabe in ein anderes Verzeichnis um….
Action php-script /cgi/php
Mit diesem Abschnitt teilst Du dem Apache mit, das das PHP-Script mit dem PHP-Interpreter in diesem festgelegtem Verzeichnis ausgeführt werden soll…
Und zu guter letzt, legst Du noch fest, welche Dateiendungen mit dem PHP-CGI ausgeführt werden sollen…
AddHandler php-script .php
So, fast geschafft…..
Jetzt kopiert noch den PHP-Interpreter in das erstellte CGI-Verzeichnis.
# cp /usr/local/bin/php /Dein_Pfad_Zu_Deinem_Document_Root/cgi/
Dann den Apache neustarten
# apachectl restart
Und einmal testen, dazu startet euren Browser und gebt in die Adresszeile folgende ein:
www.deinedomain.de/cgi/php
oder wo und wie auch immer Ihr das CGI-Verzeichnis genannt habt und drückt Enter.
Ihr solltet dann folgende Meldung erhalten
Security Alert! PHP CGI cannot be accessed directly.
This PHP CGI binary was compiled with force-cgi-redirect
enabled. This means that a page will only be served up if the
REDIRECT_STATUS CGI variable is set. This variable is set, for
example, by Apache’s Action directive redirect.
Wenn Ihr diese Meldung erhalten habt, dann ist alles in bester Ordnung und ab jetzt werde alle PHP-Skripte mit der Endung .php
von PHP-CGI interpretiert.
Kommt diese Meldung aber nicht, dann hat das installierte PHP-Binary ein Sicherheitsproblem, Ihr solltet dieses dann unbedingt durch ein aktuelles korrekt kompeliertes Binary ersetzen.
Falls Ihr es nicht aus dem Ports habt, dann neht entweder die Ports oder downloaded die PHP-Sources direkt von www.php.net
Und fertig :D
War doch gar nicht so schwer, oder?
bis dann,
stonie