Подтвердить что ты не робот

Как включить файл в конфигурацию Apache, не генерируя ошибку, если она не существует?

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

Include foo.conf

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

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

Ответ 1

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

Include foo.con[f]

Ответ 2

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

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

IncludeOptional conf/vhosts/*/*. conf

Ответ 3

Я пробовал то же самое, что и Wouter Van Vliet, но у меня все еще были ошибки. Затем я нашел эту ссылку. Я добавил этот фрагмент к моему /etc/apache 2/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>