Die httpd.conf ist die zentrale Steuerungsdatei des Apachen. Erklärungen über die einzelnen Befehle und Sektionen sind unter http://httpd.apache.org/docs-2.0/ nachzulesen.
Es gibt derzeit auch eine gute Übersetzung mit zusätzlichen Erklärungen vom Projekt SELFHTML - sie ist für LINUX und WINDOWS verfügbar.
Hinweis: Nach jeder Änderung in der httpd.conf den Apachen neu starten lassen.

Damit der Apache nicht mehr aus dem Netzwerk/Internet erreichbar ist, reicht es aus, folgende Direktive in der httpd.conf von
Listen 80
auf
Listen 127.0.0.1:80
zu ändern. So kann der Apache nur noch über die IP-Adresse 127.0.0.1 bzw. “localhost” erreicht werden.
IDNA ist ein Internetstandard, um Domains, die Nicht-ASCII-Buchstaben enthalten, als gültige ASCII-Strings im Domain Name System abzubilden. Einen solchen Domainnamen bezeichnet man als IDN oder auch Umlautdomain. Zum Beispiel schöner-frühling.de oder bäckerei-müller.de.
Am Apache selbst müssen dafür keine Änderungen vorgenommen werden. Es muss nur darauf geachtet werden, dass der Domainname mit Punycode konvertiert ist. Der Browser (Firefox/IE etc.) muss es jedoch unterstützen!
Aus bäckerei-müller.de wird dann xn–bckerei-mller-bfb28a.de und aus schöner-frühling.de wird dann xn–schner-frhling-xpb6h.de.
TIPP: Für das schnelle Testen, ob es wie gewünscht funktioniert, einfach 127.0.0.1 xn–schner-frhling-xpb6h.de in die Datei hosts (Linux) eintragen und im Browser schöner-frühling.de eingeben. Jetzt sollte ganz normal “localhost” zusehen sein.
Ein Virtualhost für schöner-frühling.de könnte also wie folgt aussehen:
<VirtualHost *:80> ServerName xn--schner-frhling-xpb6h.de DocumentRoot /opt/lampp/htdocs/ ServerAdmin webmaster@xn--schner-frhling-xpb6h.de </VirtualHost>
Dazu folgender Link: Unicode/Punnycode Converter für Domainnamen mit Umlauten oder Sonderzeichen
– Michael Kremsier 2007/07/04 18:39
Um PHP für einzelne Vhost zu deaktivieren, muss PHP als Apache Module installiert sein! Fügt dazu im jeweiligen Vhost diese Zeile ein:
php_admin_value engine off
Das könnte dann wie folgt aussehen:
<VirtualHost *:80> ServerName example.de DocumentRoot /opt/lampp/vhosts/exmaple.de ServerAdmin webmaster@example.de php_admin_value engine off </VirtualHost>
– Michael Kremsier 2007/07/04 19:26
could not bind to address 0.0.0.0:80/could not bind to address 0.0.0.0:443
Diese Fehlermeldung bedeutet, dass der Port 80/443, auf dem der Apache standardmäßig läuft, schon von einer anderen Anwendung belegt wird. Dies kann ein anderer Apache, der IIS, die interne Firewall von XP oder ähnliches sein.
Einige weitere bekannte Programme, welche Probleme verursachen können, sind:
Um herauszufinden, welche Anwendung den Port blockiert, kannst du das Tool “netstat”, welches zu Windows gehört, benutzen.
netstat -a -n -otasklist /fi "PID eq foo"Beispiel (gekürzte Ausgabe):
C:\>netstat -a -n -o Aktive Verbindungen Proto Lokale Adresse Remoteadresse Status PID TCP 0.0.0.0:443 0.0.0.0:0 ABHÖREN 1392 C:\>tasklist /fi "PID eq 1392" Abbildname PID Sitzungsname Sitz.-Nr. Speichernutzung ========================= ===== ================ ========== =============== skype.exe 1392 Console 0 3.144 K C:\>
Diese Schritte kann man auch mit in einer einzelnen Batch-Datei zusammenfassen (das ist für den Laien auch etwas übersichtlicher).
Dazu muss der folgende Code in eine leere Text-Datei kopiert werden. Nach dem Umbenennen in eine Batch-Datei (zum Beispiel httpports.cmd) kann diese ausgeführt werden und zeigt die Belegung der Ports 80 und 443 an.
@echo off setlocal echo. echo **************************** echo * * echo * XAMPP-Port-Checker * echo * * echo **************************** echo * echo * for /F "usebackq skip=4 tokens=2,5" %%i IN (`netstat -a -n -o`) DO ( if "%%i"=="0.0.0.0:80" ( if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO ( echo * --^> Port 80 wird von der Anwendung "%%l" belegt set port80=found )) if "%%i"=="127.0.0.1:80" ( if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO ( echo * --^> Port 80 wird von der Anwendung "%%l" belegt set port80=found )) if "%%i"=="0.0.0.0:443" ( if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO ( echo * --^> Port 443 wird von der Anwendung "%%l" belegt set port443=found )) if "%%i"=="127.0.0.1:443" ( if not "%%j"=="" for /F "usebackq skip=3" %%l IN (`tasklist /fi "PID eq %%j"`) DO ( echo * --^> Port 443 wird von der Anwendung "%%l" belegt set port443=found )) ) if not "%port80%"=="found" echo * --^> Port 80 ist derzeit *NICHT* belegt if not "%port443%"=="found" echo * --^> Port 443 ist derzeit *NICHT* belegt echo * echo * echo *********** ENDE *********** echo. pause > NUL
Bei Linux ist ein ähnliches Verfahren möglich
netstat -a -n -p Es erscheint eine Liste, die in zwei Sektionen unterteilt ist.ps -aux |grep PIDnummer erhält man die Info, welches Programm das ist.Beispiel (gekürzte Ausgabe):
netstat -a -n -p tcp 0 0 127.0.0.1:782 0.0.0.0:* LISTEN 1454/famd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1231/portmap tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2101/apache2 ps -aux |grep 2101 root 2101 0.0 2.6 22924 6796 ? Ss 00:00 0:00 /usr/sbin/apache2 -k start -DSSL
Hiermit erfährt man, dass schon ein Apache im System läuft und daher der XAMPP nicht starten will.
Beim Aufruf des phpinfo() / phpmyadmin kann es zu einem abrupten Ausfall des Apachen kommen. Genaue Fehlermeldung: Apache HTTP Server hat ein Problem festgestellt und muss beendet werden. AppName: apache.exe, AppVer: 2.0.54.0, ModName: sarah.dll, ModVer: 3.5.11.2001, Offset: 00003d02.
Dieses Problem erscheint nur bei Usern, die eine Fritz-BOX DSL-Modem von AVM benutzen.
Die installierte Steuerungssoftware von AVM richtet eine sarah.dll ein, die für Routingabfragen zuständig ist.
Es wurde festgestellt, dass beim Betreiben der Fritz-BOX über den LAN-Anschluss diese Software nicht installiert werden muss.
Beim Benutzen der Fritz-Box über den USB Anschluss liegt weiterhin der Fehler vor. AVM selbst hat bisher noch keine eindeutige Aussage zu diesem Problem getroffen.
In den Einstellungen von Skype den sogenannten Alternativport 80 deaktivieren. Dadurch wird der Skypestandard-Port xxxx freigegeben. Bitte das Deutsche Skype Forum besuchen, da dort hinreichende Hilfe nur über Skype zu finden ist. Deutsches Skype Forum
Ansonsten einfach zuerst den XAMPP und dann den Skype starten, dann sollte es auch gehen.
Es wurde berichtet, dass AOL den Port 443 blockiert, daher zuerst den XAMPP starten und dann erst die AOL-Software.
Der ZoneAlarm blockiert bei nicht vollständiger Konfiguration alle Ports, so dass XAMPP nicht läuft.
Beim Kasperski-Antivirus-Programm wird der “Guardian” gestartet, dieser blockiert den Port 443. Laut den Programmierern von Kasperski sollte es nicht vorkommen, aber viele Tests bestätigen, dass der Guardian deaktiviert werden sollte, wenn man XAMPP starten will.
Ab Version 8 des McAfee sollte das Problem behoben sein.
Hier muss man unterscheiden. Die benutzte Scriptsprache für ASP auf einem IIS ist normalerweise VBScript oder JScript. Dieses funktioniert auf dem Apache nicht. Also heißt es erst einmal “nein”, was die direkte Übernahme solcher Seiten angeht.
Man kann auf dem IIS aber auch PerlScript in ASP Seiten einsetzen. Im Zusammenspiel mit mod_perl und dem Perl Modul “Apache::ASP” sind solche ASP Seiten auch auf dem Apache möglich. Dazu musst du das Perl-AddOn vom XAMPP installiert haben.
Eng verwandt, aber nicht das Selbe, ist “ASP.NET”. Hierzu gibt es zwei Projekte die sich damit beschäftigen:
Grund: das Linux-System ist leider zu alt. Theroretisch könnte man zwar ein XAMPP zusammenstellen, dass auch auf diesen Systemen läuft, nur würde das den Umfang von XAMPP für Linux sprengen.
Das kann mehrere Gründe haben ...
Bei den jetzigen Distribution wie SuSE 9.x; Fedora (RedHat); Mandrake 10.x; Debian Sarge 3.x (Full-CD/DVD Install) wird standardmäßig eine Firewall aktiviert, die nur Zugriffe auf localhost-Basis zulässt. Diese Firewall dementsprechend konfigurieren, sodass Port 80 (HTTP Port) freigegeben ist.
Je nach Aufbau des eigenen Internetzuganges muss entsprechend der Geräte ein sogenanntes PORTFORWARD eingerichtet werden damit die http://-Abfragen auch auf den PC, wo XAMPP for Linux läuft, geschickt werden und dementsprechend beantwortet werden können.
Siehe dazu auch den Wiki-Eintrag für “XAMPP erreichbar aus dem Internet”
Linux: Um die Dateiendung “.php5” (”.php” ist Standard) auch auszuführen, muss die Datei “/opt/lampp/etc/extra/httpd-xampp.conf” angepasst werden.
26 # since LAMPP 1.0RC1
27 AddType application/x-httpd-php .php .php3 .php4 .php5
Um “index.php5” automatisch auszuführen, muss die “/opt/lampp/etc/httpd.conf” verändert werden.
248 #DirectoryIndex index.html
249 # XAMPP
250 DirectoryIndex index.html index.html.var index.php index.php3 index.php4 index.php5
Wer seinen XAMPP dazu bringen möchte, dass dieser nicht auf dem Standard-Port 80 laufen soll, muss in der httpd.conf den Listen 80 Befehl entsprechend ändern.
Man bedenke, dass bei einer solchen Änderung der XAMPP nicht wie gewohnt unter http://localhost zu erreichen ist, sondern unter http://localhost:PORTnummer
Dazu gibt es auch die Möglichkeit, den Standard-SSL-Port (https) zu ändern. Im XAMPP Paket wird dafür die ssl.conf benötigt (ist in der httpd.conf per -include- eingebunden). In dieser ssl.conf kann man den Listen 443 wie gewünscht ändern.
Auch hier gilt der Aufruf abweichend vom Standard https://localhost:SSLPORTnummer
Ausgehend von der Grundinstallation des XAMPPs (wiki-Beitrag = XAMPP 1.5.1-pl1 für Windows)
–> Anmerkung: Dieses Beispiel beinhaltet das Abschalten des XAMPP-Willkommenscreens!
Lösungsweg: Es muss nur der erste VHOST-Eintrag oder ein zusätzlicher VHOST eingebaut werden, der auf das “XAMPP DocumentRoot” eingerichtet ist.
Konzeptionelles:
Es sollen drei DomainDummys verwaltet werden, diese DomainDummys sollen auch auf unterschiedliche Verzeichnisse zugreifen. Unter DomainDummys könnt ihr euch das Prinzip des DynDNS-Namens annehmen.
Somit gilt folgende Beispielregel:
(im DynDNS-Account die “WildCards” einschalten!)
Vorarbeit:
Erstelle dir drei Verzeichnisse innerhalb eines eindeutigen Verzeichnisnamens (es können auch andere Partitionen benutzt werden, aber keine Netzlaufwerke!)
In jeweils diese Verzeichnisse legst du deine PageCodes hinein die man ja sehen darf.
Vorarbeit die zweite (XAMPP-Apache vorbereiten):
1) Editiere die httpd.conf und suche nach dem Eintrag
#Include conf/extra/httpd-vhosts.conf<code> und entferne die Raute (" # ") davor, danach abspeichern. (Ab XAMPP 1.5.3a nicht mehr nötig)
2) nun die ''httpd-vhost.conf'' im Verzeichnis ''\xampp\apache\conf\extra'' editieren und folgendes komplett von hier kopieren und in die Datei einfügen (COPY/PASTE)
<code>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domaindummy.dyndns.org
ServerAlias www.domaindummy.dyndns.org
ServerAdmin webmaster@localhost
DocumentRoot c:/webseiten/server
<Directory "c:/webseiten/server">
AllowOverride All
Options IncludesNoExec
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName forum.domaindummy.dyndns.org
ServerAlias www.forum.domaindummy.dyndns.org
ServerAdmin webmaster@localhost
DocumentRoot c:/webseiten/forum
<Directory "c:/webseiten/forum">
AllowOverride All
Options IncludesNoExec
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName familie.domaindummy.dyndns.org
ServerAlias www.familie.domaindummy.dyndns.org
ServerAdmin webmaster@localhost
DocumentRoot c:/webseiten/familie
<Directory "c:/webseiten/familie">
AllowOverride All
Options IncludesNoExec
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Speichern, Apache (neu)starten, jetzt sollten die konkreten HTTP-Anfragen (siehe domainamen) in die richtigen Verzeichnisse geleitet werden und einsehbar sein. Ich gehe davon aus, dass ihr verstanden habt, dass es sich hierbei um Beispielnamen handelt, dementsprechend eure Daten (Wunschverzeichnisse) eintragen.
Prinzipielles:
Alles was nun nicht mehr vom XAMPP-Apachen durch eine Anfrage aus dem WWW beantwortet werden kann, wird nun vom allerersten VHOST eintrag beantwortet. Das bedeutet, wenn jemand http://gibtsnicht.domaindummy.dyndns.org in seinem Browser eintippt, wird er nur auf das Verzeichnis des ersten VHOST geleitet. Das kommt daher, weil der Apache nun die Anfrage nicht auflösen kann. (logisch)
Mit anderen Worten, den ersten VHOST kann man als “Mutter aller Abfrage” bezeichnen, die sich meldet, sobald der Apache mit einer Anfrage nichts anfangen kann.
Für diejenigen, die das ganze auch im heimischen LAN so benutzen wollen, sei angemerkt, dass man die HOSTS-Datei eines jeden Windows-PCs im LAN editieren muss, da ein Aufruf im Browser auf den domaindummy.dyndns.org nicht funktioniert.
http://www.apachefriends.org/f/viewtopic.php?p=72083#72083 (hosts datei)
Das kleine Einmaleins für zusätzliche Funktionen:
<VirtualHost *:80>
ServerName domaindummy.dyndns.org
ServerAlias www.domaindummy.dyndns.org
ServerAdmin webmaster@localhost
DocumentRoot c:/webseiten/server
<Directory "c:/webseiten/server">
AllowOverride All
Options +Indexes IncludesNoExec # Das +Indexes veranlasst den Apache, das Verzeichnis aufzulisten, wenn keine index.html/php vorhanden ist.
AllowOverride All # Veranlasst den Apachen, auch .htaccess Anweisungen zu beachten (z.b. Passwortschutz)
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Erstelle mittels eines Texteditors eine Datei mit dem Namen " auth.txt " in dem Webverzeichnis, das geschützt werden soll, mit folgendem Inhalt:
AuthType Basic AuthName "Passwortschutz" AuthUserFile ./.htpasswd require valid-user <Limit GET,POST,PUT> Order allow,deny Allow from all Deny from none </Limit>
Nun öffne ein COMMANDFENSTER (genannt auch Eingabeaufforderung / Terminalfenster).
START –> AUSFÜHREN =⇒ cmd
Es öffnet sich ein Fenster mit schwarzem Hintergund.
cd c:\apachefriends\xampp\apache\bin (Hierbei eure Pfade annehmen !)
htpasswd.exe -c c:/apachefriends/xampp/htdocs/webseitenpfad/.htpasswd USERNAME
Jetzt wird nach einem Passwort gefragt und dann dauert es bis zu 60 Sekunden und die .htpasswd ist fertig geschrieben.
Zu guter letzt noch die " auth.txt " umbenennen hier im COMMANDFNESTER, weil der Dateiexplorer die punkt-vorgabe nicht annimmt, also folgendes:
cd c:\apachefriends\xampp\htdocs\webseitenpfad
ren auth.txt .htaccess
Jetzt kann man das COMMANDFENSTER schließen und der Passwortschutz ist eingerichtet.