Ce qui s’est passé, c’est que la syntaxe des fichiers de configuration dans apache2.4 a changé.
Source: Cela m’est arrivé aussi après que je suis passé à 13.10
fichiers conf.d
Tous les fichiers contenus dans /etc/apache2/conf.d
doivent être déplacés vers /etc/apache2/conf-available
.
Ils fonctionnent maintenant de la même façon sites
et mods
work. Mettez simplement vos fichiers conf dans le dossier conf-available
et activez celui que vous voulez avec a2enconf <config-file-name>
.
Exemple:
J'ai un fichier conf.d/httpd.conf
qui avait la directive ServerName.
Pour que cela fonctionne, je devais le déplacer dans le répertoire conf-available
et l'activer manuellement.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
fichiers de sites
Auparavant, les fichiers dans /etc/apache2/sites-available
n'avaient pas d'extension. Par exemple /etc/apache2/sites-available/default
. Maintenant, une extension .conf
est requise.
Exemple:
Si vous aviez /etc/apache2/sites-available/some-site
, vous pouvez simplement l'activer en 13.04 en utilisant sudo a2ensite some-site
. Maintenant, cela vous donnera une erreur en disant
ERREUR: site-site n'existe pas!
Pour résoudre ce problème, ajoutez un .conf
à tous vos fichiers de configuration dans sites-available
.
Vous pouvez faire la même chose dans sites-enabled
, ou vous pouvez supprimer tous les fichiers et les réactiver manuellement.
Je vous recommande de les faire manuellement car vous devez probablement réparer chaque VHost (étape suivante).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
si vous avez décidé de les faire manuellement:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Directives de l'hôte virtuel:
autoriser / refuser vs exiger
Si vous aviez les éléments suivants:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Il devrait devenir:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Pour plus d'informations, consultez les commentaires par DaveRandom sur une réponse au débordement de la pile.
En termes simples, si vous avez mis à niveau vers apache2.4 et conservé l’ancien httpd.conf
d’apache2.2, allow directive doit continuer à fonctionner correctement. Si vous avez mis à niveau votre httpd.conf
(ce que je suggère), vous obtiendrez des erreurs 403 jusqu'à ce que vous remplaciez les directives Order
/ Allow
/ Deny
par leur équivalent Require
.
Options de répertoire
Si vous aviez des options de répertoire, notez qu’elles doivent toutes être ajoutées avec +
ou -
ou aucune d’entre elles. Un mélange des deux n'est pas autorisé:
Exemple:
Ceci est autorisé:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Il en est de même (Notez que ces exemples ne font pas tous les deux la même chose, le précédent désactive l’option MultiViews
, le prochain ne le fait pas):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Ce n'est plus autorisé:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
La dernière option de configuration lance l'erreur de syntaxe en disant:
Toutes les options doivent commencer par + ou - ou aucune option ne le peut.
Redémarrez apache
Une fois que tout est fait, vous devez redémarrer votre serveur Apache pour que les modifications soient prises en compte:
sudo apache2ctl restart
Vous trouverez un guide de mise à niveau détaillé de 2.2 à 2.4 sur la documentation officielle.