[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
Dies ist der Inhalt der /etc/apache2/apache2.conf
Datei.
Antworten:
Ich hatte dieses Problem: Die Ursache ist in der Datei
wo sich die wurzel geändert hat:
vor dem Upgrade =
/var/www
nach dem Upgrade =
/var/www/html
Bearbeiten Sie diese Datei, um sie zu ändern
Und starte Apache neu
quelle
000-default.conf
Datei nicht zu bearbeiten .html
Unterordner ist bereits vorhanden, was in meinem Fall eigentlich irrelevant ist, da alle meine Sites VirtualHosts verwendenDocumentRoot
Einstellung zu tun.Ich hatte dieses Problem, obwohl Apache für mich arbeitete. Ich wollte einfach nur schnell gehen
den Wert von
SERVER_CONFIG_FILE
. Da dies nicht mehr der Weg ist, um Apache2 zu starten, scheitert es an den Fehlern, die das OP bekannt gibt. Eine schnelle und schmutzige Lösung besteht darin, die fehlenden Envvars zuerst festzulegen:Dies setzt die Variable APACHE_LOCK_DIR und alles ist in Ordnung (
-D SERVER_CONFIG_FILE="apache2.conf"
).quelle
apache2 -S
schlug fehl. Alles behoben.apache2
Als root zu laufen , behebt das Problem.apache2ctl -V
Symptome und Lösung
In vielen Q & A-Websites oder Foren verwechseln die Menschen Symptome und tatsächliche Ursachen. Ich habe gerade einen Ubuntu-Server von 13.10 auf 14.04.1 aktualisiert und bin auf genau dieselben Symptome gestoßen, die vom OP beschrieben wurden, darunter:
1 - Apache funktioniert anscheinend nicht. 2- Apache-Konfigurationsvariable undefined. 3- der vom OP erwähnte Syntaxfehler.
Das Problem ist, dass nicht alle diese Symptome tatsächlich für das eigentliche Problem relevant sind und nur als Ablenkung für diejenigen dienen, die ihr Bestes geben, um zu helfen.
Verschiedene Root-Probleme können dazu führen, dass Administratoren zu Sites wie dieser mit ungefähr der gleichen Beschreibung kommen: "Ich habe das Betriebssystem aktualisiert und jetzt funktioniert Apache nicht mehr ..."
Eine bestimmte Ursache
Ich hatte genau die gleichen offensichtlichen Symptome wie das OP und fühlte mich von dieser Frage angezogen. Leider war die einzige Antwort, die einen gültigen Hinweis auf die eigentliche Ursache meines Problems enthielt, eine Abwertung (-1), die von user1469291 mit einer Wiederholung von 1 gesendet wurde !! Also suchte ich weiter auf anderen Websites, bis ich eine klare Erklärung des Problems (und damit der Lösung) fand.
Die folgende Lösung könnte das eigentliche Problem des OP nicht lösen, aber ich bin sicher, dass sie anderen helfen wird, die sich aus den gleichen Gründen wie ich für diese Frage interessieren.
/etc/apache2/apache2.conf enthält:
Dies bedeutet, dass nur Site-Konfigurationsdateien in / etc / apache2 / sites-enabled / geladen werden, die auf .conf enden. Ältere Symlinks in diesem Verzeichnis werden ignoriert.
Früher war es einfach sites-enabled / *. Aus diesem Grund funktionierten alle meine Konfigurationsdateien für virtuelle Hosts, die ich einfach ww1.example.com, ww2.example.com usw. nannte, nach dem Upgrade plötzlich und zunächst unerklärlicherweise nicht mehr.
Also ändere entweder die obige Direktive und lade Apache neu oder entferne wie ich manuell alle älteren Symlinks in sites-enabled /, benenne alle Dateien in sites-available / um, füge das Suffix .conf hinzu und aktiviere sie dann erneut Website individuell.
Außerdem sind die Standardanweisungen in der apache.conf strenger:
Wenn Sie also Ihre virtuellen Sites in / home / user / irgendwo hosten, müssen Sie die Direktive entsprechend überschreiben.
quelle
Wenn Sie sich Ihr Problem genau ansehen, rennen Sie einfach davon
apache2
. Führen Sie den folgenden Befehl aus, um Apache in Ubuntu zu starten:Die Apache-Konfiguration ist in mehrere Dateien aufgeteilt. Eine dieser Dateien ist eine Umgebungsvariable. Wenn Sie nur ausführen
apache2
, werden diese Variablen nicht festgelegt.Das Skript apache2ctl lädt die Variablen (und erledigt bei Bedarf auch andere Aufgaben), bevor Apache mit gestartet wird
apache2 -k start
.quelle
sudo apache2ctl restart
stattdessen.Bearbeiten Sie die Konfiguration
sudo leafpad /etc/apache2/apache2.conf
:oder Datei entfernen.
quelle
Augustins Antwort funktionierte für mich, als alle meine virtuellen Hosts nach einem Server-Upgrade von 12.04 LTS auf 14.04 LTS verschwanden. Ich würde es befürworten, wenn ich den Ruf hätte, dies zu tun.
Der folgende Befehl fügt das
.conf
Suffix allen Symlinks hinzu/etc/apache2/sites-enabled
, die es noch nicht haben:Außerdem wurde die Verwendung der Syntax
Allow from
/ in das Modul mod_authz_host geändert ( hier ist der Link für die 2.2-Dokumentation).Deny from
Require
Mit dem folgenden Befehl wird die allgemeine Verwendung von
Order allow, deny
gefolgt vonAllow from all
alsRequire all granted
stattdessen bearbeitet :quelle
Tatsächlich wechselt die Docroot zwischen präzise und vertrauenswürdig von / var / www nach / var / www / html. Es ist mangelhaft, dass das Skript do-release-upgrade die Docroot nicht rückgängig macht.
A) Entweder ist gültig, aber HTML ist konventioneller. CentOS ist in dieser Hinsicht einflussreich. Die "es funktioniert" Seite ist jetzt auch reifer.
B) Sie müssen / var / www / html nicht verwenden, aber wenn Sie ...
C) Und es ist möglicherweise einfacher, von Grund auf zu bauen und zu migrieren.
D) Dieses Symptom tritt auf, wenn Sie "sudo apache2 -k graceful" bei Trusty verwenden, ein Upgrade durchführen oder nicht, weil Envvars nicht im Geltungsbereich sind? Verwenden Sie stattdessen "sudo apache2ctl start / stop / restart".
quelle
In meinem Fall:
html
Unterordner bei/var/www/
existierte bereits, aber ich bekam trotzdem den Fehler:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
/home/{user}/sites/
anstelle der Standardwebsite/var/www/html
apache2 -v
)Wie ich das Problem in fünf einfachen Schritten gelöst habe:
In habe
/etc/apache2/apache2.conf
ich nach Zeile 169 folgendes eingefügt:Ich habe meine Virtual Host - Konfiguration namens sure
website.conf
an/etc/apache2/sites-available
wurde aus dem Standard kopiert000-default.conf
, und sah aus wie:Ich habe meine Site (
sudo a2dissite website && sudo a2ensite website
) und meinen Server neu geladen und der anfängliche Fehler war verschwunden. WOOHOO! Es gab jedoch ein neues: "AH00035: Zugriff auf / verweigert (Dateisystempfad '/ home / {user} / sites'), da für eine Komponente des Pfads Suchberechtigungen fehlen". Dies habe ich in Schritt 4 gelöst.Das neue Problem war auf Berechtigungen zurückzuführen, daher habe ich einfach jedes der Verzeichnisse, die zum
website
Ordner führen, auf festgelegtchmod 755
. Jedes einzelne! Derhome
Ordner, der Ordner {user}, der Site-Ordner und sogar mein Website-OrdnerNach dem Auffrischen meines Browsers wird
website.dev
alles gut geladen!PS Ich hatte bereits
website.dev
in meiner/etc/hosts
Datei eingerichtet.Bonus-Tipp: Um die Berechtigungen eines bestimmten Ordners zu überprüfen, können Sie den Befehl verwenden
stat -c %a /path/to/file/or/folder
. Um die Berechtigungen für jeden Teil eines Verzeichnisses zu überprüfen, verwenden Sienamei -m /path/to/final/folder
.quelle