Options指令禁止的目录索引

2020/11/14 11:22 · php ·  · 0评论

我正在将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文件添加到根目录和文档目录中(也正如其他地方所建议的那样,但无济于事)。

任何帮助,不胜感激。

谢谢!

该目录或附近父目录中的mainhttpd.conf.htaccess文件可能包括:

Options -Indexes

+Indexes如果您无权访问.htaccess并想要列出和浏览目录内容,缺少默认index.html, index.php目录等您的主机可能必须将其设置为。如果目录不应该包含默认文件并且您未启用Indexes,则可能仅直接定位其中内容的文件名。

Indexes默认情况下,在许多Apache安装中通常禁用选项。

有关完整的详细信息,请参见以下内容的Apache核心文档:Options

这意味着该目录中没有默认文档(index.html,index.php等...)。在大多数Web服务器上,这意味着它将显示目录内容的列表。但服务器配置禁止显示该目录(Options -Indexes

问题

在Web浏览器中可见的索引,其中不包含index.html或index.php文件的目录。

我无法在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

并重新启动Web服务器。

在Apache的核心Mod页面上:(https://httpd.apache.org/docs/2.4/mod/core.html#options

将带有+或-的选项与不带有+或-的选项混合使用是无效的语法,并且在服务器启动期间将被语法检查(带有中止)拒绝。

对于不包含index.html或index.php文件的目录,不再显示Voilà目录索引。

怎么办!新皱纹

尝试进行这种目录访问时,新条目开始显示在“ 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更改为更高的级别(例如'crit')以记录更少的日志,而只是记录更严重的错误消息。

Apache 2.4日志级别

请参阅Apache 2.4的LogLevel核心指令

emerg,警报,暴击,错误,警告,通知,信息,调试,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>

并将其添加到网站.htaccess文件的根目录/ home / mydomain.com /htdocs/.htaccess中:

Options -Indexes

如果您不介意“错误”级别的消息,请省略

LogLevel crit

科学版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中重命名(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

如果您正在运行RHEL(我曾遇到过),则可能会遇到的另一个问题是,默认的欢迎页面配置了httpd软件包,即使您放置了选项索引,该页面也会覆盖您的设置。该文件位于/etc/httpd/conf.d/welcome.conf中。有关更多信息,请参见以下链接:http :
//wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

插入以下行:

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

文献资料

我陷入了同样的错误,问题出在我的代码中MySql语句中语法错误,特别是我的$ _session变量缺少“'”。花了数小时才弄清楚,因为在错误日志中该语句误导他人,希望对您有所帮助。

在conf.d中添加此功能为我解决了此问题。

Options +Indexes +FollowSymLinks

就我而言,这是造成此问题的错字:

<VirtualHost *.8080>

应该

<VirtualHost *:8080>

如果您一直在进行性能调整,则可能已删除了mod_dir。尝试放回去,这可能会解决您的问题。

本文地址:http://php.askforanswer.com/optionszhilingjinzhidemulusuoyin.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!