47 votes

Comment inclure un fichier dans la configuration Apache sans générer d'erreur lorsqu'il n'existe pas ?

Il s'agit d'un fichier de configuration partagé qui devrait inclure un autre fichier s'il existe, mais qui fonctionnera toujours autrement. Si je fais

 Include foo.conf

et foo.conf n'existe pas, apache se plaindra :

 could not open document config file /etc/httpd/conf/foo.conf

62voto

Russell Davis Points 2949

J'ai trouvé une solution intelligente, bien qu'il puisse y avoir une meilleure façon. Mettez l'un des caractères entre parenthèses pour qu'Apache le traite comme un modèle glob, qui est autorisé à correspondre à zéro fichier sans provoquer d'erreur. Par exemple:

 Include foo.con[f]

48voto

user144437 Points 638

Selon http://httpd.apache.org/docs/2.4/mod/core.html#include, vous pouvez utiliser "IncludeOptional":

Alternativement, la commande suivante sera simplement ignorée en cas de fichiers ou de répertoires manquants :

InclureOptional conf/vhosts/*/*.conf

7voto

Alex Klimov Points 71
IncludeOptional foo.conf

Apache httpd version 2.3.6 et ultérieure

https://httpd.apache.org/docs/2.4/mod/core.html#includefacultatif

2voto

J'ai essayé la même chose que Wouter Van Vliet, mais j'ai toujours des erreurs. Puis j'ai trouvé ce lien . J'ai ajouté cet extrait à mon /etc/apache2/apache2.conf et cela fonctionne à merveille !

Remarque : vous avez besoin de mod_perl pour cela !

Voici le code :

 <perl>
    use File::stat;
    foreach $file (glob '/srv/www/vhosts/*/conf/vhost.conf') {
        my $stat = stat($file);
        if ($stat-&gt;uid != 0 || $stat-&gt;gid != 0) {
            warn "$file is not owned by root:root, skipping!\n";
            next;
        }
        if ($stat-&gt;mode &amp; 0002) {
            warn "$file is world-writable, skipping!\n";
            next;
        }
        push @Include, $file;
    }
</perl>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X