Apache sucht conf/httpd.conf

In einer Installation von Apache Webserver war es zunächst unklar, wie das Serverprogramm httpd seine Konfigurationsdatei findet. Zwar war über eine Option der Pfad zur Konfiguration angegeben, allerdings mit einem relativen Pfad, der nicht zum Residenzverzeichnis des Programms zu passen schien.
Ein Durchsuchen von Dokumentationen im Internet brachte keinen Aufschluss, außerdem war es unmöglich, alle Fundstellen zu lesen. Einige Tests brachten Aufschluss; in Folge hier niedergeschrieben.

Was uns httpd selbst verrät

Wir öffnen ein Kommandozeilenfenster (Eingabeaufforderung, Terminalfenster je nach Betriebssystem) und wechseln in das Installationsverzeichnis von httpd. Im folgen eine Liste von Kommandos, die den Service selbst nicht starten, aber ihn etwas erzählen lassen.
# Kommandos zur Information über httpd

Testumgebung einrichten

Auf einer Speicherkarte wurde ein Ordner test eingerichtet und die nötigsten Dateien einkopiert, vermisst httpd nur noch seine Konfigurationsdatei.
# minimale Testumgebung
D:\test>httpd
httpd: Could not open configuration file D:/test/conf/httpd.conf: 
Das System kann den angegebenen Pfad nicht finden.
Herauszufinden, welche Dateien dazugehören, war relativ einfach. Wird httpd aufgerufen, zeigt eine Fehlerausschrift, welche Datei vermisst wird. Ist das Nötigste vorhanden, startet httpd. Mit Strg+C oder anderen Bordmitteln kann der Prozess beendet werden.

Was genau httpd sucht

Aus dem obigen Aufruf ist zu erkennen:
  • httpd sucht eine Datei mit dem Namen httpd.conf
  • Die Datei wird in dem Verzeichnis conf erwartet
  • conf muss ein Unterverzeichnis des Installationsverzeichnisses sein, i.Bsp. also test/conf

httpd kennt auch bin !

In der eingangs erwähnten Installation war jedoch die Konfigurationsdatei an einer anderen Stelle; httpd residierte in dem Verzeichnis bin
Um das nachzubilden, wurde ein Verzeichnis bin unter test angelegt und die Serverdateien dorthin verschoben.
# Aufruf in test/bin
D:\test\bin>httpd
httpd: Could not open configuration file D:/test/conf/httpd.conf: 
Das System kann den angegebenen Pfad nicht finden.
Überraschung: httpd sucht conf jetzt nicht mehr im eigenen, sondern im übergeordneten Verzeichnis, i.Bsp. also auch jetzt in test/conf.

Die Gegenprobe

Ist es wirklich so, dass httpd seine Konfigurationssuche ändert, abhängig davon, ob er in bin oder einem Verzeichnis mit anderem Namen residiert? Um das zu überprüfen, wurde bin in mybin umbenannt.
# Aufruf im umbenannten Installationsverzeichnis
D:\test\mybin>httpd
httpd: Could not open configuration file D:/test/mybin/conf/httpd.conf: 
Das System kann den angegebenen Pfad nicht finden.
Tatsächlich, httpd erwartet conf jetzt wieder als Unterverzeichnis.