Apache: "AuthType non défini!" Erreur 500

98

Cela fait un moment que j'utilise le serveur Web Apache httpd. Je lance un serveur local pour un projet et lorsque j'essaie de demander localhost / index.html, j'obtiens une erreur 500 et je vois ceci dans le journal des erreurs:

[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /index.html
[Tue Jan 21 09:23:58 2014] [error] an unknown filter was not added: DEFLATE
[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /favicon.ico

Il semble qu'il y ait peut-être 2 erreurs ici dans la configuration d'Apache, une liée à "AuthType not set!" et peut-être un autre lié à "le filtre n'a pas été ajouté: DEFLATE". Je ne sais pas ce que cela signifie ni par où commencer à creuser.

Une recherche Google de base a révélé ce lien qui indique que le coupable peut être "Exiger tout accordé". Cette ligne dans mon httpd.conf peut être impliquée.

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

Cette configuration Apache est principalement ce qui est utilisé en production pour ce projet, donc je sais que cela fonctionne, mais pas actuellement sur mon poste de travail. Qu'est-ce que cela signifie et que dois-je essayer ensuite? J'ai essayé de commenter "Exiger tout accordé" et de redémarrer Apache mais en vain.

Suite à cette question SO, j'ai également chargé mod_authz_host

LoadModule authz_host_module modules/mod_authz_host.so

et ajouté "Autoriser de tous", redémarré le serveur ,. mais le problème persiste. Le problème de dégonflage ne semble pas lié et a été facilement résolu en ajoutant

LoadModule deflate_module modules/mod_deflate.so

La question demeure, comment résoudre cette erreur 500?

[Tue Jan 21 09:44:20 2014] [crit] [client ::1] 
configuration error:  couldn't perform authentication. 
AuthType not set!: /index.html
user3220334
la source

Réponses:

183

Supprimez la ligne qui dit

Require all granted

il n'est nécessaire que sur Apache> = 2.4

Stefan
la source
1
Ou utilisez la syntaxe <IfVersion> ... voir ma réponse ci-dessous.
pkout le
Excellente solution - a pris trop de temps à trouver. Merci!
AlienWebguy
Dans OS X MAMP apache 2.2, passez de "Exiger tout accordé" à Satisfaire n'importe quel
Matilda Yi Pan
49

Le problème ici peut être formulé d'une autre manière: comment créer une configuration qui fonctionne à la fois dans Apache 2.2 et 2.4?

Require all grantedest seulement en 2.4, mais Allow all ...cesse de fonctionner dans 2.4, et nous voulons pouvoir déployer une configuration qui fonctionne dans les deux.

La seule solution que j'ai trouvée, dont je ne suis pas sûr d'être la bonne, est d'utiliser:

# backwards compatibility with apache 2.2
Order allow,deny
Allow from all

# forward compatibility with apache 2.4
Require all granted
Satisfy Any

Cela devrait résoudre votre problème, ou du moins l'a fait pour moi. Maintenant, le problème sera probablement beaucoup plus difficile à résoudre si vous avez des règles d'accès plus complexes ...

Voir aussi cette question assez similaire . Le wiki Debian contient également des instructions utiles pour prendre en charge les versions 2.2 et 2.4 .

anarcat
la source
J'ai volontairement joint les deux extraits pour qu'ils fonctionnent dans les deux versions ici, veuillez ne pas les séparer à nouveau.
anarcat
1
A fonctionné comme un charme. Merci!
Anna Wellington
34

Alternativement, cette solution fonctionne à la fois avec la version Apache2 <2.4 ainsi qu'avec> = 2.4. Assurez-vous que le module "version" est activé:

a2enmod version

Et puis utilisez ce code à la place:

<IfVersion < 2.4>
    Allow from all
</IfVersion>
<IfVersion >= 2.4>
    Require all granted
</IfVersion>
pkout
la source
Vous pouvez également utiliser cette réponse pour éviter d'activer un autre module: stackoverflow.com/questions/10707186/...
Stefan
3

Supprimez / commentez simplement la ligne suivante de votre fichier httpd.conf (etc / httpd / conf)

Exiger tout accordé

Ceci est nécessaire jusqu'à la version 2.2 d'Apache et n'est plus nécessaire à partir de là.

CodedCoder
la source
0

Je pense que vous avez une version 2.4.x d'Apache.

Êtes-vous sûr de charger ces 2 modules? - mod_authn_core - mod_authz_core

LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so

PS: Ma recommandation d'autorisation et de droits est (par défaut):

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
Georgio
la source
Merci Georgio, en fait je n'ai pas les modules auth {n | z} _core dans mon répertoire modules.
user3220334
Vous voyez ces modules tout de même avec httpd -l?
Georgio
Je me demande, devrais-je les construire séparément? Il s'agit de l'installation prête à l'emploi de la version 2.2.15 sur CentOS `apachectl -version Server version: Apache / 2.2.15 (Unix) Server build: 13 août 2013 17: 29: 28`
user3220334
Arf, désolé, vous utilisez Apache 2.2.x et non 2.4.x. Les modules n'ont pas le même nom. Les modules sont: mod_authn_file.c mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic
Georgio
Cool, merci pour la liste, je les ai tous ajoutés et j'ai redémarré mais j'obtiens toujours l'erreur.
user3220334
0

Vous pouvez essayer sudo a2enmod rewritesi vous l'utilisez dans votre config.

saian
la source