Frage Die Apache2-Konfigurationsvariable ist nicht definiert


Ich habe Apache2 auf Ubuntu 13.10 installiert. Wenn ich versuche, es mit zu starten

sudo /etc/init.d/apache2 restart

Ich bekomme diese Nachricht:

AH00558: apache2: Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.1.1 nicht zuverlässig ermittelt werden. Setzen Sie die Direktive 'ServerName' global, um diese Nachricht zu unterdrücken

Also lese ich, dass ich meine bearbeiten sollte httpd.conf Datei. Aber da ich es nicht finden kann /etc/apache2/ Ordner, ich habe versucht, es mit diesem Befehl zu finden:

/usr/sbin/apache2 -V

Aber die Ausgabe, die ich bekomme, ist diese:

[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Fri Nov 29 17:35:43.942560 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Fri Nov 29 17:35:43.942602 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Fri Nov 29 17:35:43.942613 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Fri Nov 29 17:35:43.942627 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.947913 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948051 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948075 2013] [core:warn] [pid 14655] 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}

Linie 74 von /etc/apache2/apache2.conf ist das:

Mutex file:${APACHE_LOCK_DIR} default

Ich warf einen Blick auf meine /etc/apache2/envvar Datei, aber ich weiß nicht, was ich damit machen soll.

Was soll ich machen?


54
2017-11-29 16:49


Ursprung


Was ist in deiner envvars-Datei? - etagenklo


Antworten:


[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined

Diese Nachricht wird angezeigt, weil Sie die Apache2-Binärdatei direkt ausgeführt haben. In Ubuntu / Debian basiert die Apache-Konfiguration auf der envvar-Datei, die nur aktiviert ist Wenn Sie Apache mit dem Init-Skript oder Apachectl starten.

Ihr ursprüngliches Problem ist, dass Sie keinen richtigen Hostnamen (FQDN) für Ihren Computer haben. Wenn Sie es nicht ändern können, ändern Sie die ServerName Variable in /etc/apache2/apache2.conf zu localhost oder Ihren bevorzugten FQDN.


51
2017-11-29 17:50



Sie haben Recht mit dem Init-Skript. Dann fügte ich hinzu ServerName localhost zu apache2.conf (da httpd.conf wird nicht immer auf Ubuntu verwendet) und jetzt funktioniert alles wie es sollte. Könnten Sie bitte Details zu Ihren Antworten hinzufügen, damit ich sie als akzeptiert markieren kann? - Kurt Bourbaki
beginnen mit apache2ctl funktionierte nicht für mich, ich musste benutze den Service: sudo service apache2 restart - Édouard Lopez
Aber warum haben sie das gebrochen? apache2 Befehl an erster Stelle? - reinierpost
Diese Lösung löst nur AH00558: apache2: Could not reliably determine the server's fully qualified domain name aber es löst nicht Config variable ${APACHE_LOCK_DIR} is not defined. - Vladimir Vukanac
für mich sehe ich auch das gleiche Problem. - nepsdotin


Rufen Sie Ihre envvars auf, indem Sie sie wie folgt ausführen:

source /etc/apache2/envvars

und dann

/usr/sbin/apache2 -V

Du solltest bekommen:

el@apollo:/home/el$ apache2 -V
Server version: Apache/2.4.7 (Ubuntu)
Server built:   Apr  3 2014 12:20:28
Server's Module Magic Number: 20120211:27
Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

72
2018-06-28 10:51



/etc/apache2/envvars existiert nicht - Mark Richman
Die Datei existiert zwar auf meinem Ubuntu-System, aber die Shell erkennt sie nicht als Shell-Skript, also brauche ich Folgendes: source / etc / apache2 / envvars; apache2 -V - Ben Crowell
Dies sollte die akzeptierte Antwort sein !! Vielen Dank! - VaTo
Könnte einfach verwenden apachectl -V anstatt manuell in die Umgebungsvariablen zu laden. - Sam Sehnert
Wenn es immer noch nicht funktioniert, versuche es source /etc/apache2/envvars && sudo -E apache2 -V oder einloggen als root und mach pro Antwort oben. Das Sourcen von apache2 env an einen normalen Benutzer, der dann sudo verwenden muss, funktioniert nicht ohne "-E". Regelmäßige Benutzer perms können den privaten Ordner des Zertifikats unter anderen Problemen nicht lesen. Sie erhalten einen Fehler. Sie müssen sudo -E oder unter root-Account vollständig ausführen. - bshea


Überprüfe dein /etc/apache2/envvars für das APACHE_LOCK_DIR. In meinem Ubuntu 12.04 ist das so /var/lock/apache2$SUFFIX, da SUFFIX normalerweise leer ist.

Überprüfen Sie, ob das Verzeichnis existiert und beschreibbar ist.

Kann es sein, dass die envvars-Datei nicht korrekt stammt? Wenn Sie sich ansehen /etc/init.d/apache2 Sie können sehen, dass es stammt.

Meine (Standard) /etc/apache2/envvars:

# envvars - default environment variables for apache2ctl

# this won't be correct after changing uid
unset HOME

# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
    SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
    SUFFIX=
fi

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale

export LANG

## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'

## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

Wenn nichts funktioniert, würde ich versuchen, die Pakete neu zu installieren.


7
2017-11-29 17:49





Wie bereits erwähnt, müssen Sie Ihre Umgebung laden (Quelle), bevor Sie sie direkt ausführen Eine andere Möglichkeit ist: apache2ctl z.B.

sudo apache2ctl -S 

meine Gastgeber abladen


2
2018-02-24 22:38





TL; DR; Sie sollten apache2 mit dem starten, was Sie bereits haben:

sudo /etc/init.d/apache2 {start|stop|restart}

Detailliert:

AH00558: apache2: Der vollständig qualifizierte Domänenname des Servers konnte mit 127.0.1.1 nicht zuverlässig ermittelt werden. Setzen Sie die Direktive 'ServerName' global, um diese Nachricht zu unterdrücken

Diese Nachricht bedeutet, dass Sie Ihren Servernamen / Domänennamen definieren müssen. Es ist nicht notwendig, dies für einen lokalen Host / Test der Produktion zu tun, Sie müssen sich nicht darum kümmern.

Wenn Sie versuchen, es andersherum zu verwenden, verwenden Sie nur apache2Sie erhalten diese Fehlermeldungen aufgrund dessen, was zuvor gesagt wurde: Die Umgebungsvariablen werden definiert, wenn Sie das Standardskript in verwenden init.d.


2
2018-06-02 11:07





Vielleicht wird das dein Problem lösen

sudo bash -c '. /etc/apache2/envvars ; apache2'

-1
2018-04-13 14:44



lesen Sie zuerst, genau diese Zeile wurde bereits zur Verfügung gestellt, und es wurde auch erklärt, warum es keine richtige Antwort ist. - asdmin


Sie müssen das DocumentRoot von aktualisieren /var/www/html zu /var/www

Bearbeiten Sie die Datei /etc/apache2/sites-available/000-default.conf wie folgt

DocumentRoot /var/www

-2
2018-05-12 10:31