Индекс каталога запрещен директивой Options

Я использую плагин 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 в каталог корневого каталога и документа (как и предлагалось в другом месте, но безрезультатно).

Любая помощь очень ценится.

Благодаря!

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

 Options -Indexes 

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

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

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

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

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

Проблема

Индексы отображаются в веб-браузере для каталогов, которые не содержат файл 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 

Эта запись относится к модулю «autoindex» Apache с LogLevel «error», как указано в [autoindex: error] сообщения об ошибке – формат [имя_модуля: loglevel].

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

Apache 2.4 LogLevels

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

появление, предупреждение, крит, ошибка, предупреждение, уведомление, информация, отладка, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8

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

Уровень по умолчанию для Apache 2.4 – «предупреждение». Поэтому все сообщения, относящиеся к появлению, предупреждению, криту, ошибке и предупреждению, записываются в error_log.

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

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

 LogLevel crit 

Решение 1

Конфигурация httpd.conf для моего виртуального хоста <Directory> .. </ Directory>:

 <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

Больше нет autoindex'ing каталогов внутри вашего веб-пространства. Нет изменений в .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

Отключить модуль autoindex введите команду

  sudo a2dismod autoindex 

для включения модуля autoindex

  sudo a2enmod autoindex 

Вставьте следующие строки:

 <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.

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