Forum Linux.debian/ubuntu [Résolu] Apache2 : comment accéder aux sous-répertoires de /var/www ?

Posté par . Licence CC by-sa
2
18
jan.
2015

Bonjour à tous,

J'ai installé apache2 sur Linux Mint LMDE (base Debian), avec les paramètres par défaut.
Tous les fichiers .html ou .php mis dans le répertoire /var/www sont effectivement accessibles depuis le navigateur, sous localhost. Par exemple : http://localhost/ma_page.php

J'ai ensuite crée le sous-répertoire /var/www/icons/ afin d'y ranger les icones de ma page, mais pas moyen d'y avoir accès :

/var/www/icons/une_icone.png retourne "404 Not found - The requested URL /icons/une_icone.png was not found on this server"

et

http://localhost/icons/ retourne : "403 Forbidden - You don't have permission to access /icons/ on this server"

Le sous-répertoire icons a les mêmes droits que /var/www. Dans apache2.conf j'ai :

   <Directory /var/www/>
      Options Indexes FollowSymLinks
      AllowOverride None
      Require all granted
   </Directory>

Je ne comprend pas car d'après la doc apache ce qui est déclaré pour un répertoire s'applique aux sous-répertoires…

Qu'en pensez-vous ?

  • # que c'est normal...

    Posté par . Évalué à 2. Dernière modification le 18/01/15 à 12:43.

    1°) tu ne peux pas lister le contenu d'un dossier, c'est une mesure de securité par defaut.

    2°) les seules fichiers qui sont autorisés à etre affiché directement sont les fichiers index.html, index.php
    ce sont ces fichiers qui doivent inclure ton icone pour l'afficher dans une page

    3°) il faut peut-etre autoriser l'utilisateur www-data ou apache2 à parcourir le dossier (droit r-x sur le dossier et le fichier)

    pour voir l'icone dans le navigateur, en direct, ce sera :
    http://localhost/icons/une_icone.png

    pour la charger à partir d'une page qui se trouve dans /var/www,
    cela sera un <img src=icons/une_icone.png />

    • [^] # Re: que c'est normal...

      Posté par . Évalué à 1.

      Merci pour les réponses. Quelques précisions :

      1°) tu ne peux pas lister le contenu d'un dossier, c'est une mesure de securité par defaut.

      Ok. Ce point ne pose pas problème. Je ne souhaite pas que le contenu du dossier soit listé, mais que toute page qui s'y trouve puisse être servie. Pour l'instant c'est le cas de toutes les pages situées dans /var/www, mais pas dans /var/www/icons/

      2°) les seules fichiers qui sont autorisés à être affiché directement sont les fichiers index.html, index.php

      Pourtant tous les fichiers mis dans /var/www sont actuellement appelable par le navigateur à l'adresse localhost

      ce sont ces fichiers qui doivent inclure ton icone pour l'afficher dans une page

      Comment cela ?

      3°) il faut peut-etre autoriser l'utilisateur www-data ou apache2 à parcourir le dossier (droit r-x sur le dossier et le fichier)

      Actuellement les répertoires sont root avec accès rwx pour tous, et les fichiers sont à mon nom d'utilisateur avec r-x pour tous.

      pour voir l'icone dans le navigateur, en direct, ce sera :
      http://localhost/icons/une_icone.png

      pour la charger à partir d'une page qui se trouve dans /var/www,
      cela sera un <img src=icons/une_icone.png />

      C'est bien ce que je fais

      • [^] # Re: que c'est normal...

        Posté par (page perso) . Évalué à 2.

        Ça devrait marcher. Est-ce que tu es sûr de pas te tromper dans l'URL ? C'est sensible à la casse.
        Sinon tu peux regarder /var/log/apache* y aura peut-être un truc.

        • [^] # Re: que c'est normal...

          Posté par . Évalué à 1.

          Rrrrr c'est agaçant…
          Pour éviter ce type d'erreur, j'ai copié le index.html crée par défaut dans /var/www/ vers /var/www/icons.
          en faisant http://localhost/icons/index.html j'ai toujours l'erreur 404, et en faisant uniquement http://localhost/icons/ j'ai dans le apache2/error.log :
          [autoindex:error] [pid 10008] [client 127.0.0.1:55110] AH01276: Cannot serve directory /usr/share/apache2/icons/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

          • [^] # Re: que c'est normal...

            Posté par . Évalué à 2.

            D'après tes informations il y une erreur dans ta configuration apache.

            Tu demande la page http://localhost/icons/ sensé être dans le répertoire /var/www/icons mais l'erreur t'indique :

            Cannot serve directory /usr/share/apache2/icons/:

          • [^] # Re: que c'est normal...

            Posté par . Évalué à 3.

            comme le dit pulco, il doit y avoir une definition de /icons dans les fichiers de configurations apache qui envoie /icons vers /usr/share/apache2/icons

            essaie en mettant tes icones dans le dossier /var/www/images ou /var/www/pictures

            • [^] # Re: que c'est normal...

              Posté par . Évalué à 1.

              Aaaaaah, il y a vraiment de quoi se la mordre, comme dirait un acteur connu…

              Bravo les gars. Il s'avère qu'il y a déjà un répertoire "icons" sous /usr/share/apache2, auquel Apache donne la priorité sur /var/www/icons.

              Manque de bol il a fallu que je crée comme premier sous répertoire un qui a le même nom…

              J'ai changé /var/www/icons en /var/www/icones et maintenant ça marche. En plus ça m'apprendra à pas causer français.

              Dire que j'ai passé quatre heures à tourner ce truc dans tous les sens !!!

              Merci mille fois pour votre aide.

              • [^] # Re: que c'est normal...

                Posté par . Évalué à 3.

                Salut,

                Pour être précis, ce n'est pas Apache tout seul qui « donne la priorité » à /usr/share/apache2/icons/.

                Si c'est configuré comme sous Debian, c'est dans /etc/apache2/mods-enabled/alias.conf (lien symbolique vers /etc/apache2/mods-available/alias.conf) que ça se passe. Ce fichier définit l'alias /icons/ vers le répertoire /usr/share/apache2/icons/.
                Comme il est indiqué dans le fichiers de conf, tu peux supprimer la définition de cet alias, en particulier si l'affichage automatique du contenu des répertoires est désactivé (ce qui est généralement préférable sur un serveur publiquement accessible).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.