Es ist passiert, dass sich die Syntax der Konfigurationsdateien in apache2.4 geändert hat.
Quelle: Dies ist mir auch passiert, nachdem ich auf 13.10 aktualisiert habe
conf.d-Dateien
Alle Dateien, die sich in befanden, /etc/apache2/conf.dsollten in verschoben werden /etc/apache2/conf-available.
Sie arbeiten jetzt auf die gleiche Art sitesund Weise mods. Legen Sie einfach Ihre conf-Dateien in den conf-availableOrdner und aktivieren Sie den gewünschten Ordner a2enconf <config-file-name>.
Beispiel:
Ich hatte eine Datei, conf.d/httpd.confdie die ServerName-Direktive hatte.
Damit das funktioniert, musste ich es in das conf-availableVerzeichnis verschieben und manuell aktivieren.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
Sites-Dateien
Zuvor hatten Dateien in /etc/apache2/sites-availablekeine Erweiterung. Zum Beispiel /etc/apache2/sites-available/default. Jetzt ist eine .confErweiterung erforderlich.
Beispiel:
Wenn ja /etc/apache2/sites-available/some-site, können Sie es in 13.04 einfach mit aktivieren sudo a2ensite some-site. Jetzt wird ein Fehler angezeigt
FEHLER: Site some-site existiert nicht!
Um dies zu beheben, hängen Sie ein .confan alle Ihre Konfigurationsdateien in an sites-available. Sie können dasselbe in sites-enabledausführen oder Sie können alle Dateien löschen und sie jeweils manuell wieder aktivieren.
Ich empfehle sie manuell zu machen, da Sie wahrscheinlich jeden VHost reparieren müssen (nächster Schritt).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
Wenn Sie sich dazu entschieden haben, diese manuell auszuführen:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Anweisungen für virtuelle Hosts:
erlauben / verweigern vs erfordern
Wenn Sie folgendes hätten:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Es sollte werden:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Weitere Informationen finden Sie in den Kommentaren von DaveRandom zu einer Antwort auf Stack Overflow.
Kurz gesagt, wenn Sie ein Upgrade auf apache2.4 durchgeführt haben und das alte httpd.confvon apache2.2 beibehalten haben, sollte allow Directive weiterhin einwandfrei funktionieren. Wenn Sie Ihr Upgrade httpd.conf(was ich würde vorschlagen), erhalten Sie 403 Fehler , bis Sie die Änderung Order/ Allow/ DenyRichtlinien zu deren Äquivalent Require.
Verzeichnisoptionen
Wenn Sie Directory - Optionen haben, zur Kenntnis , dass sie alle mit einem vorangestellt werden müssen +oder -oder keiner von ihnen überhaupt. Eine Mischung aus beiden ist nicht erlaubt:
Beispiel:
Das ist erlaubt:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Das ist auch so (Beachten Sie, dass diese Beispiele nicht dasselbe tun, das vorherige deaktiviert die MultiViewsOption, das nächste nicht):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Dies ist nicht länger erlaubt:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Die letzte Konfigurationsoption löst einen Syntaxfehler aus, der besagt:
Entweder müssen alle Optionen mit + oder - beginnen, oder keine Option darf.
Starten Sie Apache neu
Sobald alles erledigt ist, müssen Sie Ihren Apache-Server neu starten, damit die Änderungen wirksam werden:
sudo apache2ctl restart
Eine ausführliche Anleitung zum Upgrade von 2.2 auf 2.4 finden Sie in der offiziellen Dokumentation.
httpd.confDatei oder keinconf.dVerzeichnis. Aber es gibt eineapache2.confAkte. Ich habe versucht, es in dasconf-availableVerzeichnis zu verschieben, und habe beim Neustart von apache2 die folgende Fehlermeldung erhalten: apache2: Die Konfigurationsdatei /etc/apache2/apache2.conf konnte nicht geöffnet werden. Keine solche Datei oder kein solches Verzeichnis - Was könnte der Grund sein?