Как включить файл в конфигурацию Apache, не создавая ошибки, когда он не существует? - PullRequest
38 голосов
/ 13 марта 2012

Это для общего конфигурационного файла, который должен включать в себя другой файл, если он существует, но все равно работает иначе.Если я сделаю

Include foo.conf

и foo.conf не будет, apache будет жаловаться:

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

Ответы [ 4 ]

56 голосов
/ 13 марта 2012

Я придумал умное решение, хотя, возможно, есть и лучший способ.Поместите один из символов в квадратные скобки, чтобы Apache рассматривал его как шаблон глобуса, которому разрешено сопоставлять ноль файлов без возникновения ошибки.Например:

Include foo.con[f]
38 голосов
/ 17 января 2013

Согласно http://httpd.apache.org/docs/2.4/mod/core.html#include вы можете использовать «IncludeOptional»:

В качестве альтернативы следующая команда будет просто проигнорирована в случае отсутствия файлов или каталогов:

IncludeOptional conf / vhosts / * / *. Conf

4 голосов
/ 16 января 2018
IncludeOptional foo.conf

Apache httpd версии 2.3.6 и более поздних

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

2 голосов
/ 19 января 2016

Я пробовал так же, как Wouter Van Vliet, но все равно получал ошибки.Тогда я нашел эту ссылку .Я добавил этот фрагмент к своему / etc / apache2 / apache2.conf , и он работает как шарм!

Примечание: для этого вам нужно mod_perl !

Вот код:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...