web-dev-qa-db-de.com

Verzeichnisindex durch Options-Direktive verboten

Ich benutze das Dompdf-Plugin für Codeigniter: http://codeigniter.com/wiki/PDF_generation_using_dompdf/

pdfs aus einem Formular generieren. Dies funktioniert auf localhost, aber auf dem Live-Server bekomme ich dies im Fehlerprotokoll:

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

Irgendeine Idee, was das bedeutet? Ich habe nach Antworten gesucht und einige gefunden, die die Bearbeitung der httpd.conf vorschlagen, jedoch habe ich keinen Zugriff darauf.

Ich habe auch versucht, eine leere index.html-Datei zum Stammverzeichnis und zum Dokumentverzeichnis hinzuzufügen (wie auch an anderer Stelle vorgeschlagen, jedoch ohne Erfolg).

Jede Hilfe sehr geschätzt.

Vielen Dank!

47
logic-unit

Die httpd.conf-Hauptdatei oder die .htaccess-Datei in diesem Verzeichnis oder ein in der Nähe befindliches übergeordnetes Verzeichnis enthält wahrscheinlich:

Options -Indexes

Ihr Host muss möglicherweise +Indexes einstellen, wenn Sie in .htaccess keinen Zugriff haben und den Inhalt des Verzeichnisses anzeigen und durchsuchen möchten, wenn kein Standardcode index.html, index.php vorhanden ist Indexes, Sie können nur die Dateinamen der darin enthaltenen Inhalte direkt anvisieren.

Die Option Indexes ist in vielen Apache-Installationen standardmäßig standardmäßig deaktiviert.

Ausführliche Informationen finden Sie in der Apache-Kerndokumentation zu Options

57

Das bedeutet, dass sich in diesem Verzeichnis kein Standarddokument befindet (index.html, index.php usw.). Bei den meisten Webservern würde dies bedeuten, dass der Inhalt des Verzeichnisses aufgelistet wird. Die Anzeige dieses Verzeichnisses ist jedoch durch die Serverkonfiguration verboten (Options -Indexes).

30
Marc B

Ein anderes Problem, auf das Sie möglicherweise stoßen könnten, wenn Sie RHEL ausführen (ich bin darauf gestoßen), ist, dass eine Standard-Willkommensseite mit dem httpd-Paket konfiguriert ist, die Ihre Einstellungen überschreibt, selbst wenn Sie Optionsindizes verwenden. Die Datei befindet sich in /etc/httpd/conf.d/welcome.conf. Unter folgendem Link finden Sie weitere Informationen: http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

9
majikman

Das Problem

In einem Webbrowser sichtbare Indizes für Verzeichnisse, die keine index.html- oder index.php-Datei enthalten.

Ich hatte große Probleme mit der Konfiguration des httpd-Webservers von Scientific Linux, um diese Indizes nicht mehr anzeigen zu lassen.

Die Konfiguration hat nicht funktioniert

httpd.conf-Verzeichnisrichtlinien für virtuelle Hosts:

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

und das Hinzufügen der folgenden Zeile zu .htaccess:

Options -Indexes

Verzeichnisindizes wurden immer noch angezeigt. .htaccess Einstellungen funktionierten nicht! 

Wie konnte das sein, andere Einstellungen in .htaccess haben funktioniert, warum also nicht diese? Was geht? Es sollte funktionieren! % # $ & ^ $% @ # !! 

Die Reparatur

Ändern Sie die Optionszeile von httpd.conf in:

Options +FollowSymLinks

und starten Sie den Webserver neu. 

Von der zentralen Mod-Seite von Apache: ( https://httpd.Apache.org/docs/2.4/mod/core.html#options )

Das Mischen von Optionen mit einem + oder - mit denen ohne ist keine gültige Syntax und wird während des Serverstarts von der Syntaxprüfung mit einem .__ abgelehnt. abbrechen.

Die Verzeichnisindizes von Voilà wurden nicht mehr für Verzeichnisse angezeigt, die keine index.html- oder index.php-Datei enthielten. 

Was jetzt! Eine neue Falte

Beim Versuch eines solchen Verzeichniszugriffs wurden neue Einträge im 'error_log' angezeigt:

[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

Dieser Eintrag stammt aus dem Apache-Modul 'autoindex' mit einer LogLevel von 'error', wie in [autoindex: error] der Fehlermeldung angezeigt - Das Format ist [module_name: loglevel].

Um zu verhindern, dass diese neuen Einträge protokolliert werden, muss der LogLevel auf eine höhere Ebene (z. B. 'krit') geändert werden, um weniger zu protokollieren - nur ernsthaftere Fehlermeldungen.

Apache 2.4 LogLevels

Siehe die Kernrichtlinien von Apache 2.4 für LogLevel

emerg, warnung, krit, fehler, warnung, hinweis, infos, debuggen, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8

Jede Ebene, die tiefer in die Liste aufgenommen wird, protokolliert alle Nachrichten aller vorherigen Ebenen. 

Die Standardstufe von Apache 2.4 lautet 'warn'. Daher werden alle Nachrichten, die als emerg, alert, krit, error und warn klassifiziert sind, in error_log geschrieben.

Zusätzlicher Fix zum Stoppen neuer error_log-Einträge

Die folgende Zeile wurde im Abschnitt <Directory> .. </ Directory> von httpd.conf hinzugefügt:

LogLevel crit

Die Lösung 1

Httpd.conf <Directory> .. </ Directory> -Konfiguration meines virtuellen Hosts:

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

und in/home/mydomain.com /htdocs/.htaccess das Stammverzeichnis der .htaccess-Datei Ihrer Website hinzufügen:

Options -Indexes

Wenn Sie sich nicht um die Fehlermeldungen auf Fehlerebene kümmern, lassen Sie sie weg 

LogLevel crit

Scientific Linux - Lösung 2 - Deaktiviert mod_autoindex

Keine automatische Indexierung von Verzeichnissen in Ihrem Webspace. Keine Änderungen an .htaccess. Sie benötigen jedoch Zugriff auf die httpd-Konfigurationsdateien in/etc/httpd

  1. Bearbeiten Sie /etc/httpd/conf.modules.d/00-base.conf und kommentieren Sie die Zeile: 

    LoadModule autoindex_module modules/mod_autoindex.so
    

    indem Sie ein # voranstellen, speichern Sie die Datei.

  2. Im Verzeichnis /etc/httpd/conf.d umbenennen (mv) 

    Sudo mv autoindex.conf autoindex.conf.<something_else>
    
  3. Starten Sie httpd neu:

    Sudo httpd -k restart
    

    oder

    Sudo apachectl restart
    

Der autoindex_mod ist jetzt deaktiviert.

Linux-Distributionen mit ap2dismod/ap2enmod-Befehlen

Autoindex-Modul deaktivieren, geben Sie den Befehl ein

    Sudo a2dismod autoindex

um das Autoindex-Modul zu aktivieren

    Sudo a2enmod autoindex
8
kaosengr

Fügen Sie diese Zeilen ein:

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

In Ihrer C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf-Datei. Ich gehe davon aus, dass Sie Virtual Host für die Entwicklung verwenden.

Und dann natürlich Apache neu starten.

Dokumentation

Das Hinzufügen dieser Datei in conf.d hat dieses Problem für mich behoben.

Options +Indexes +FollowSymLinks
0
Sparkplug

Ich bin auf den gleichen Fehler stecken geblieben, das Problem war auf einenSyntaxfehler in einer MySql-Anweisung in meinem Code zurückzuführen , insbesondere in meiner $ _session-Variable fehlte ein "' Da das Statement im Fehlerprotokoll irreführend war, hoffe es hilft jemandem.

0
Tommaso Lazzari