Ubuntu Apache2 DefaultRuntimeDir doit être un répertoire valide, absolu ou relatif à ServerRoot

16

J'ai un serveur Web exécutant Ubuntu 17.04 avec lequel j'essaie de configurer Apache. Tout s'est très bien passé jusqu'à ce que je décide d'héberger deux sites Web sur une seule machine via virtualHosts. Refuse maintenant apachede démarrer même avec un seul hôte activé. Chaque fois que j'essaie de démarrer, Apachej'obtiens cette erreur:

apache2: Syntax error on line 80 of /etc/apache2/apache2.conf:
DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot.

Aucune de mes tentatives pour résoudre ce problème n'a abouti à quoi que ce soit, y compris:

apt purge apache2 && rm -r /etc/apache2 

Toute la ligne 80 du message d'erreur me dit que c'est DefaultRuntimeDir ${APACHE_RUN_DIR}.

Et à aucun moment je ne vois où ni ce qui APACHE_RUN_DIRest déclaré.

Est-ce que quelqu'un peut m'aider?

timhyd
la source

Réponses:

16

La commande

source /etc/apache2/envvars

réglé mon problème (après avoir essayé TOUS les autres).

Pour vérifier si tout va bien ou non, utilisez la commande

apache2 -S

J'ai trouvé que c'était plus rapide que d'utiliser mes enregistrements DNS.

je suis
la source
1
J'ai utilisé le source /etc/apache2/envvarsmais après cela, mon répertoire personnel est passé de ~à homeet quand j'ai écrit un cd, il l'a montré -bash: cd: HOME not set. Lorsque je suis entré dans les envvars, l'une des premières lignes est # this won't be correct after changing uidet unset HOME. Une idée de comment résoudre ce problème?
Mihail Minkov
7

Il y a une mise à jour manquante dans "man apache2", au moins pour l'option -V;

Aujourd'hui, on devrait utiliser "apachectl" ou "apache2ctl" au lieu de

"apache2" pour au moins certaines options, comme indiqué dans

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879571

Rocdufer
la source
On ne sait pas du tout comment cela répond à la question.
Randy Cragun
6

Apache2 utilise /etc/apache2/envvarspour définir les variables d'environnement. Vous pouvez utiliser ces informations pour vous assurer que le répertoire ${APACHE_RUN_DIR}pointe vers est valide.

Je rencontrais le même problème lors de la mise à niveau du 14.04 au 17.04. Le problème était: a ${APACHE_RUN_DIR}été défini sur /var/run/apache2, mais le dossier apache2 manquait dans /var/run.

La solution pour moi était: mkdir /var/run/apache2

Niyol
la source
7
même si vous avez créé le dossier ou si le dossier est déjà présenté (comme dans ma situation), vous devez exécuter la commande suivante. source /etc/apache2/envvars
Peshmerge
vous n'avez besoin d'exécuter la commande envvares que si vous démarrez Apache sans le script de démarrage, si vous utilisez init.d / system.d, le fichier proviendra automatiquement.
Niyol
@Peshmerge THanks! pouvez-vous me dire comment le conserver après le redémarrage? il semble qu'au redémarrage, nous devons exécuter manuellement cette commande à chaque fois
T.Todua
1

dans mon cas, il s'agissait de la ligne "Exiger tout refusé" dans le fichier apache2.conf qui (encore une fois) dans mon cas a été tapée comme "Exiger refusé"

Гдето Якутский
la source
0

Le php5.6module Reachebling apache permet de résoudre ce problème.

Appuyez sur Ctrl+ Alt+ Tet saisissez-les:

sudo a2dismod php5.6
sudo a2enmod php5.6

Redémarrez ensuite le service apache2:

sudo service apache2 restart
Vladimir Ch
la source