我正在使用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文件添加到根目录和文档目录中(也在其他地方建议,但无济于事。)
非常感谢任何帮助。
谢谢!
答案 0 :(得分:60)
此目录中的主httpd.conf
或.htaccess
文件或附近的父目录可能包括:
Options -Indexes
如果您无法访问+Indexes
并希望列出&成员,则主持人可能必须将其设置为.htaccess
。浏览目录内容,缺少默认index.html, index.php
等。如果目录不应该有默认文件而您没有启用Indexes
,则只能直接定位其中的内容的文件名。 / p>
默认情况下,许多Apache安装通常会禁用Indexes
选项。
答案 1 :(得分:30)
这意味着该目录中没有默认文档(index.html,index.php等...)。在大多数网络服务器上,这意味着它会显示目录内容的列表。但是服务器配置(Options -Indexes
)
答案 2 :(得分:9)
如果您正在运行RHEL(我遇到它),您可能遇到的另一个问题是,即使您放置了选项索引,也有一个配置了httpd包的默认欢迎页面将覆盖您的设置。该文件位于/etc/httpd/conf.d/welcome.conf中。有关详细信息,请参阅以下链接: http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/
答案 3 :(得分:9)
在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中的其他设置正在运行,为什么不这个呢?怎么了?它应该工作! %#$&amp; ^ $%@#!!
将httpd.conf的Options行更改为:
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
此条目来自Apache模块'autoindex',其LogLevel为'error',如错误消息的[autoindex:error]所示---格式为[module_name:loglevel]。
要阻止记录这些新条目,需要将LogLevel更改为更高级别(例如“crit”)以记录更少的 - 只有更严重的错误消息。
请参阅Apache 2.4的LogLevel核心指令。
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。
在&lt; Directory&gt; ..&lt; / Directory&gt;中添加了以下行。 httpd.conf的一节:
LogLevel crit
我的虚拟主机的httpd.conf&lt;目录&gt; ..&lt; /目录&gt;配置:
<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
不再对网络空间内的目录进行自动索引。没有更改.htaccess。但是,需要访问/ etc / httpd
中的httpd配置文件编辑/etc/httpd/conf.modules.d/00-base.conf并注释该行:
LoadModule autoindex_module modules/mod_autoindex.so
在其前面添加一个#然后保存文件。
在目录/etc/httpd/conf.d rename(mv)
中sudo mv autoindex.conf autoindex.conf.<something_else>
重启httpd:
sudo httpd -k restart
或
sudo apachectl restart
现在禁用了autoindex_mod。
禁用autoindex模块输入命令
sudo a2dismod autoindex
启用autoindex模块输入
sudo a2enmod autoindex
答案 4 :(得分:4)
插入以下行:
<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。
答案 5 :(得分:0)
我遇到了同样的错误,问题来自于我的代码中的MySql语句中的语法错误,特别是我的$ _session变量缺少&#34; &#39; 。需要花费数小时才能弄明白,因为在错误日志中,该语句具有误导性。希望它对某人有所帮助。
答案 6 :(得分:0)
在conf.d中添加此内容为我解决了此问题。
Options +Indexes +FollowSymLinks
答案 7 :(得分:0)
就我而言,这是造成此问题的错字:
<VirtualHost *.8080>
应该是
<VirtualHost *:8080>
答案 8 :(得分:0)
如果您一直在进行性能调整,则可能已删除了mod_dir。尝试放回去,这可能会解决您的问题。