web-dev-qa-db-fra.com

Index de répertoire interdit par la directive Options

J'utilise le plugin dompdf pour codeigniter: http://codeigniter.com/wiki/PDF_generation_using_dompdf/

générer des fichiers PDF à partir d'un formulaire. Cela fonctionne sur localhost, mais sur le serveur live, le message d'erreur suivant s'affiche:

Directory index forbidden by Options directive: /var/www/vhosts/domain.co.uk/httpdocs/mm/userdata/account1/invoices/

Une idée de ce que cela signifie? J'ai cherché des réponses et en ai trouvé quelques-unes qui suggèrent de modifier le fichier httpd.conf, mais je n'y ai pas accès.

J'ai également essayé d'ajouter un fichier index.html vide au répertoire racine et au répertoire du document (comme suggéré ailleurs, mais en vain).

Toute aide grandement appréciée.

Merci!

47
logic-unit

Le fichier principal httpd.conf ou le fichier .htaccess de ce répertoire ou un répertoire parent proche inclut probablement:

Options -Indexes

Votre hôte devra peut-être le définir sur +Indexes si vous n'avez pas accès à .htaccess et souhaitez répertorier et parcourir le contenu du répertoire, en l'absence d'un index.html, index.php par défaut, etc. Si le répertoire ne doit pas contenir de fichier par défaut et que vous ne l'activez pas Indexes, vous ne pouvez cibler directement que les noms de fichiers du contenu qu’il contient.

L'option Indexes est généralement désactivée par défaut sur de nombreuses installations Apache.

Tous les détails sont disponibles dans la documentation de base Apache sur Options

57
Michael Berkowski

Cela signifie qu'il n'y a pas de document par défaut dans ce répertoire (index.html, index.php, etc ...). Sur la plupart des serveurs Web, cela signifierait qu’il afficherait une liste du contenu du répertoire. Mais montrer que ce répertoire est interdit par la configuration du serveur (Options -Indexes)

30
Marc B

Un autre problème que vous pourriez rencontrer si vous exécutiez RHEL (je l'ai rencontré) est qu'il existe une page d'accueil par défaut configurée avec le package httpd qui remplacera vos paramètres, même si vous mettez des index Options. Le fichier est dans /etc/httpd/conf.d/welcome.conf. Voir le lien suivant pour plus d’informations: http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

9
majikman

Le problème

Index visibles dans un navigateur Web pour les répertoires ne contenant pas de fichier index.html ou index.php.

J'ai eu beaucoup de difficulté avec la configuration sur le serveur Web httpd de Scientific Linux pour ne plus afficher ces index.

La configuration qui n'a pas fonctionné

directives du répertoire de l'hôte virtuel httpd.conf:

<Directory /home/mydomain.com/htdocs>
    Options FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

et l'ajout de la ligne suivante à .htaccess:

Options -Indexes

Les index de répertoires apparaissaient toujours. Les paramètres .htaccess ne fonctionnaient pas! 

Comment cela se pourrait-il, les autres paramètres de .htaccess fonctionnaient, alors pourquoi pas celui-ci? Qu'est-ce qui se passe? Cela devrait fonctionner! % # $ & ^ $% @ # !! 

Le correctif

Modifiez la ligne Options de httpd.conf en:

Options +FollowSymLinks

et redémarrez le serveur Web. 

Depuis la page de modification principale d'Apache: ( https://httpd.Apache.org/docs/2.4/mod/core.html#options )

Mélanger les options avec un + ou - avec ceux sans est pas une syntaxe valide et sera rejeté lors du démarrage du serveur par la vérification de la syntaxe avec un avorter.

Les index de répertoires Voilà n'apparaissaient plus pour les répertoires ne contenant pas de fichier index.html ou index.php. 

Maintenant quoi! Une nouvelle ride

De nouvelles entrées ont commencé à apparaître dans le journal 'error_log' lorsqu'une telle tentative d'accès au répertoire a été effectuée:

[Fri Aug 19 02:57:39.922872 2016] [autoindex:error] [pid 12479] [client aaa.bbb.ccc.ddd:xxxxx] AH01276: Cannot serve directory /home/mydomain.com/htdocs/dir-without-index-file/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

Cette entrée provient du module Apache 'autoindex' avec un niveau de journal 'erreur' comme indiqué par [autoindex: erreur] du message d'erreur --- le format est [nom_module: loglevel].

Pour que ces nouvelles entrées ne soient plus consignées, vous devez modifier le niveau de journal (LogLevel) à un niveau supérieur (par exemple, "crit") afin d'en enregistrer moins - uniquement les messages d'erreur plus graves.

Apache 2.4 LogLevels

Voir les directives principales d'Apache 2.4 pour LogLevel

émergent, alerte, critique, erreur, avertir, remarque, info, débogage, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8

Chaque niveau plus profond dans la liste enregistre tous les messages de tous les niveaux précédents. 

Le niveau par défaut d'Apache 2.4 est "avertir". Par conséquent, tous les messages classés comme émergents, alertes, critiques, d'erreur et avertis sont écrits dans error_log.

Correctif supplémentaire pour arrêter les nouvelles entrées error_log

Ajout de la ligne suivante dans la section <Directory> .. </ Directory> de httpd.conf:

LogLevel crit

La solution 1

Configuration de httpd.conf <Directory> .. </ Directory> de mon hôte virtuel:

<Directory /home/mydomain.com/htdocs>
    Options +FollowSymLinks
    AllowOverride all
    Require all granted
    LogLevel crit
</Directory>

et en ajoutant à/home/mydomain.com /htdocs/.htaccess, le répertoire racine du fichier .htaccess de votre site Web:

Options -Indexes

Si les messages de niveau 'erreur' ne vous dérangent pas, omettez 

LogLevel crit

Scientific Linux - Solution 2 - Désactive mod_autoindex

Plus d'auto-indexation des répertoires dans votre espace web. Aucun changement à .htaccess. Mais, besoin d’accéder aux fichiers de configuration httpd dans/etc/httpd

  1. Éditez /etc/httpd/conf.modules.d/00-base.conf et commentez la ligne: 

    LoadModule autoindex_module modules/mod_autoindex.so
    

    en ajoutant un # devant, puis enregistrez le fichier.

  2. Dans le répertoire /etc/httpd/conf.d renommer (mv) 

    Sudo mv autoindex.conf autoindex.conf.<something_else>
    
  3. Redémarrez httpd:

    Sudo httpd -k restart
    

    ou

    Sudo apachectl restart
    

Autoindex_mod est maintenant désactivé.

Distributions Linux avec les commandes ap2dismod/ap2enmod

Désactiver le module autoindex entrez la commande

    Sudo a2dismod autoindex

pour activer le module autoindex entrez

    Sudo a2enmod autoindex
8
kaosengr

Insérer ces lignes:

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
        Options  +Indexes
</Directory>

Dans votre fichier C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf. Je suppose que vous utilisez l'hôte virtuel pour le développement.

Et bien sûr, redémarrez Apache.

Documentation

Ajouter ceci dans conf.d a corrigé ce problème pour moi.

Options +Indexes +FollowSymLinks
0
Sparkplug

Je me suis retrouvé coincé dans la même erreur, le problème venait d'une erreur de syntaxe dans une instruction MySql de mon code , en particulier ma variable $ _session manquait d'un "'. Il a fallu des heures pour le comprendre. parce que, dans le journal des erreurs, la déclaration était trompeuse. J'espère que cela aidera quelqu'un.

0
Tommaso Lazzari