En réalité, la syntaxe des fichiers de configuration dans apache2.4 a été modifiée.
Source: Cela m'est aussi arrivé après la mise à niveau vers 13.10.
fichiers conf.d
Tous les fichiers qui étaient dans /etc/apache2/conf.d
doivent être déplacés vers /etc/apache2/conf-available
.
Ils travaillent maintenant de la même manière sites
et mods
fonctionnent. Il suffit de mettre vos fichiers de configuration dans le conf-available
dossier et d'activer celui que vous voulez aveca2enconf <config-file-name>
.
Exemple:
J'ai eu un fichier conf.d/httpd.conf
qui avait la directive ServerName.
Pour que cela fonctionne, je devais le déplacer dans le conf-available
répertoire 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 /etc/apache2/sites-available
n’avaient aucune extension. Par exemple /etc/apache2/sites-available/default
. Maintenant, une .conf
extension est nécessaire.
Exemple:
Si vous aviez /etc/apache2/sites-available/some-site
, dans 13.04 vous pouvez simplement l'activer en utilisant sudo a2ensite some-site
. Maintenant, il va vous donner une erreur en disant
ERREUR: Certains sites n'existent pas!
Pour résoudre ce problème, ajoutez a .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 chacun manuellement.
Je recommande de les faire manuellement car vous devrez 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:
<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 de DaveRandom sur une réponse à Stack Overflow.
Autrement dit, si vous avez mis à niveau vers apache2.4 et que vous conservez l’ancienne version httpd.conf
d’apache2.2, autorisez la directive devrait continuer à fonctionner correctement. Si vous avez mis à jour votre httpd.conf
(ce que je suggérerais), vous obtiendrez 403 erreurs jusqu'à ce que vous changiez les directives Order
/ Allow
/ Deny
en leur équivalent.Require
.
Options du répertoire
Si vous aviez des options Directory, notez que tous doivent être préfixé avec un +
ou -
ou aucun d'entre eux du tout. Un mélange des deux n'est pas autorisé:
Exemple:
Ceci est autorisé:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Donc, ceci est (notez que ces exemples ne font pas tous les deux la même chose, le précédent désactive l' MultiViews
option, pas le suivant):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Ce n'est plus permis:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
La dernière option de configuration génèrera une erreur de syntaxe en disant:
Toutes les options doivent commencer par + ou -, ou aucune option ne le peut.
Redémarrer Apache
Une fois que tout est terminé, vous devez redémarrer votre serveur Apache pour que les modifications prennent effet:
sudo apache2ctl restart
Vous pouvez trouver un guide de mise à niveau détaillé de 2.2 à 2.4 sur la documentation officielle.
httpd.conf
fichier, niconf.d
répertoire. Mais il y a unapache2.conf
fichier. J'ai essayé de le déplacer dans leconf-available
répertoire et j'ai obtenu le message d' erreur suivant lorsque j'ai redémarré apache2: apache2: impossible d'ouvrir le fichier de configuration /etc/apache2/apache2.conf: Aucun fichier ou répertoire de ce type - Quelle peut en être la raison?