web-dev-qa-db-ja.com

オプションディレクティブで禁止されているディレクトリインデックス

Codeigniterにdompdfプラグインを使用しています: http://codeigniter.com/wiki/PDF_generation_using_dompdf/

フォームからPDFを生成します。これはローカルホストで機能しますが、ライブサーバーではエラーログにこれが表示されます:

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

これが何を意味するか考えていますか?回答を検索し、httpd.confの編集を提案するものをいくつか見つけましたが、これにアクセスできません。

また、空のindex.htmlファイルをルートおよびドキュメントディレクトリに追加しようとしました(他にも提案されていますが、利用できません)。

どんな助けも大歓迎です。

ありがとう!

51
logic-unit

このディレクトリまたは近くの親ディレクトリのメインhttpd.confまたは.htaccessファイルのいずれかに、おそらく次のものが含まれます。

Options -Indexes

ホストは、+Indexesへのアクセス権がなく、ディレクトリの内容を一覧表示および参照したい場合、デフォルトの.htaccessなどがない場合は、index.html, index.phpに設定する必要があります。デフォルトのファイルを使用せず、Indexesを有効にしないでください。その中のコンテンツのファイル名のみを直接ターゲットにできます。

Indexesオプションは、多くのApacheインストールでデフォルトで一般的に無効になっています。

詳細は OptionsのApacheコアドキュメント にあります。

61

これは、そのディレクトリにデフォルトのドキュメントがないことを意味します(index.html、index.phpなど)。ほとんどのWebサーバーでは、ディレクトリのコンテンツのリストが表示されることを意味します。ただし、そのディレクトリの表示はサーバー構成によって禁止されています(Options -Indexes

30
Marc B

問題

Index.htmlまたはindex.phpファイルを含まないディレクトリのWebブラウザに表示されるインデックス。

Scientific Linuxのhttpd Webサーバーの設定で、これらのインデックスの表示を停止するのに苦労しました。

動作しなかった構成

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のコアmodページから:( 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:error]で示されるLogレベルが 'error'のApacheモジュール 'autoindex'からのものです。形式は[module_name:loglevel]です。

これらの新しいエントリのログを停止するには、LogLevelをより高いレベル(「crit」など)に変更して、より少ないログを記録する必要があります(より重大なエラーメッセージのみ)。

Apache 2.4 LogLevels

LogLevel のApache 2.4のコアディレクティブを参照してください。

emerg、alert、crit、error、warn、notice、info、debug、trace1、trace2、trace3、tracr4、trace5、trace6、trace7、trace8

リスト内の各レベルでは、以前のレベルのすべてのメッセージが記録されます。

Apache 2.4のデフォルトレベルは「警告」です。したがって、emerg、alert、crit、error、およびwarnとして分類されたすべてのメッセージは、error_logに書き込まれます。

新しいerror_logエントリを停止するための追加修正

Httpd.confの<Directory> .. </ Directory>セクション内に次の行を追加しました。

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に追加します。これは、Webサイトの.htaccessファイルのルートディレクトリです。

Options -Indexes

「エラー」レベルのメッセージを気にしない場合は、省略します

LogLevel crit

Scientific Linux-ソリューション2-mod_autoindexを無効にします

Webスペース内のディレクトリの自動インデックス作成はもう必要ありません。 .htaccessへの変更はありません。ただし、/ etc/httpdのhttpd設定ファイルにアクセスする必要があります

  1. /etc/httpd/conf.modules.d/00-base.confを編集し、次の行をコメント化します。

    LoadModule autoindex_module modules/mod_autoindex.so
    

    その前に#を追加して、ファイルを保存します。

  2. ディレクトリー/etc/httpd/conf.d rename(mv)

    Sudo mv autoindex.conf autoindex.conf.<something_else>
    
  3. Httpdを再起動します。

    Sudo httpd -k restart
    

    または

    Sudo apachectl restart
    

Autoindex_modは無効になりました。

Ap2dismod/ap2enmodコマンドを使用したLinuxディストリビューション

自動インデックスモジュールを無効にしてコマンドを入力します

    Sudo a2dismod autoindex

自動インデックスモジュールを有効にするには

    Sudo a2enmod autoindex
10
kaosengr

RHELを実行している場合に遭遇する可能性のある別の問題(私はそれに遭遇しました)は、オプションインデックスを配置した場合でも、設定をオーバーライドするhttpdパッケージで構成された既定のウェルカムページがあることです。ファイルは/etc/httpd/conf.d/welcome.confにあります。詳細については、次のリンクを参照してください。 http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

10
majikman

次の行を挿入します。

<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ファイル内。開発に仮想ホストを使用していると思います。

そして、もちろん、Apacheを再起動するだけです。

ドキュメント

これをconf.dに追加すると、この問題は修正されました。

Options +Indexes +FollowSymLinks
0
Sparkplug

私は同じエラーで立ち往生しました、問題は私のコードのMySqlステートメントの構文エラーに起因していました、特に私の$ _session変数にはがありませんでした」 '。エラーログではステートメントが誤解を招くため、それを把握するのに何時間もかかりました。

0
Tommaso Lazzari