Индекс каталога, запрещенный директивой Options - PullRequest
49 голосов
/ 14 марта 2011

Я использую плагин dompdf для codeigniter: http://codeigniter.com/wiki/PDF_generation_using_dompdf/

для создания PDF-файлов из формы. Это работает на localhost, но на живом сервере я получаю это в журнале ошибок:

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

Есть идеи, что это значит? Я искал ответы и нашел несколько, которые предлагают отредактировать httpd.conf, однако у меня нет доступа к этому.

Я также попытался добавить пустой файл index.html в корневой каталог и каталог документов (как и предлагалось в другом месте, но безрезультатно).

Любая помощь с благодарностью.

Спасибо!

Ответы [ 7 ]

60 голосов
/ 14 марта 2011

Либо основной httpd.conf, либо .htaccess файл в этом каталоге, либо в соседнем родительском каталоге, вероятно, содержит:

Options -Indexes

Вашему хосту, возможно, придется установить его на +Indexes, если у вас нет доступа в .htaccess и вы хотите просматривать и просматривать содержимое каталога, отсутствует значение по умолчанию index.html, index.php и т. Д. Если каталог не должен иметь файл по умолчанию, и вы не включаете Indexes, вы можете напрямую указывать только имена файлов содержимого в нем.

Опция Indexes обычно отключена по умолчанию во многих установках Apache.

Полная информация доступна в документации ядра Apache по Options

30 голосов
/ 14 марта 2011

Это означает, что в этом каталоге нет документа по умолчанию (index.html, index.php и т. Д.).На большинстве веб-серверов это означало бы отображение списка содержимого каталога.Но показ того, что каталог запрещен конфигурацией сервера (Options -Indexes)

9 голосов
/ 18 августа 2016

Проблема

Индексы, видимые в веб-браузере для каталогов, которые не содержат файл index.html или index.php.

У меня было много проблем с настройкой на httpd-сервере Scientific Linux, чтобы перестать показывать эти индексы.

Конфигурация, которая не работала

Директивы виртуального хоста httpd.conf:

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

и добавление следующей строки в .htaccess:

Options -Indexes

Индексы каталогов все еще показывались. Настройки .htaccess не работали!

Как это могло быть, другие настройки в .htaccess работали, так почему бы не этот? Что происходит? Это должно работать! % # $ & ^ $% @ # !!

Исправление

Измените строку параметров httpd.conf на:

Options +FollowSymLinks

и перезапустите веб-сервер.

Со страницы основного мода Apache: (https://httpd.apache.org/docs/2.4/mod/core.html#options)

Параметры смешивания с + или - с параметрами без допустимого синтаксиса и будет отклонен во время запуска сервера с помощью проверки синтаксиса с прервать.

Индексы каталогов Voilà больше не отображаются для каталогов, которые не содержат файл index.html или index.php.

Что теперь? Новая морщина

Новые записи начали появляться в 'error_log' при попытке доступа к каталогу:

[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

Эта запись из модуля Apache 'autoindex' с LogLevel 'error', как указано [autoindex: error] сообщения об ошибке --- формат: [module_name: loglevel].

Чтобы не регистрировать эти новые записи, необходимо изменить уровень LogLevel на более высокий уровень (например, «крит»), чтобы регистрировать меньше - только более серьезные сообщения об ошибках.

Apache 2.4 LogLevels

См. Основные директивы Apache 2.4 для LogLevel .

emerg, alert, crit, error, warn, note, info, отладка, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8

Каждый уровень, более глубокий в списке, регистрирует все сообщения любого предыдущего уровня (уровней).

Уровень Apache 2.4 по умолчанию равен «warn». Поэтому все сообщения, классифицированные как emerg, alert, crit, error и warn, записываются в error_log.

Дополнительное исправление для остановки новых записей error_log

Добавлена ​​следующая строка внутри .. раздела httpd.conf:

LogLevel crit

Решение 1

httpd.conf моего виртуального хоста .. конфигурация:

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

и добавление в /home/mydomain.com/htdocs/.htaccess корневой каталог файла .htaccess вашего веб-сайта:

Options -Indexes

Если вы не возражаете против сообщений об ошибках, пропустите

LogLevel crit

Scientific Linux - Решение 2 - Отключает mod_autoindex

Больше нет автоматического индексирования каталогов внутри вашего веб-пространства. Без изменений в .htaccess. Но нужен доступ к файлам конфигурации httpd в / etc / httpd

  1. Отредактируйте /etc/httpd/conf.modules.d/00-base.conf и прокомментируйте строку:

    LoadModule autoindex_module modules/mod_autoindex.so
    

    добавив перед ним символ #, затем сохраните файл.

  2. В каталоге /etc/httpd/conf.d переименуйте (mv)

    sudo mv autoindex.conf autoindex.conf.<something_else>
    
  3. Перезапустите httpd:

    sudo httpd -k restart
    

    или

    sudo apachectl restart
    

Функция autoindex_mod теперь отключена.

Linux-дистрибутивы с командами ap2dismod / ap2enmod

Отключить модуль автоиндексирования, ввести команду

    sudo a2dismod autoindex

для включения модуля автоиндексирования введите

    sudo a2enmod autoindex
9 голосов
/ 22 марта 2014

Другая проблема, с которой вы можете столкнуться, если вы запускаете RHEL (я столкнулся с ней), заключается в том, что есть страница приветствия по умолчанию, настроенная с помощью пакета httpd, которая переопределяет ваши настройки, даже если вы добавили индексы параметров. Файл находится в /etc/httpd/conf.d/welcome.conf. Смотрите следующую ссылку для получения дополнительной информации: http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

4 голосов
/ 22 января 2014

Вставьте эти строки:

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

В вашем файле C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf. Я предполагаю, что вы используете Virtual Host для разработки.

А потом, конечно, просто перезапустите Apache.

Документация

0 голосов
/ 06 мая 2019

Добавление этого в conf.d устранило эту проблему для меня.

Options +Indexes +FollowSymLinks
0 голосов
/ 12 июня 2018

Я застрял на той же ошибке, проблема была вызвана синтаксической ошибкой в инструкции MySql в моем коде , в частности, в моей переменной $ _session отсутствовал "'Потребовались часы, чтобы понять это, потому что в журнале ошибок утверждение вводило в заблуждение. Надеюсь, это кому-нибудь поможет.

...