选项 FollowSymLinks 或 SymLinksIfOwnerMatch 已关闭
Posted
技术标签:
【中文标题】选项 FollowSymLinks 或 SymLinksIfOwnerMatch 已关闭【英文标题】:Options FollowSymLinks or SymLinksIfOwnerMatch is off 【发布时间】:2012-08-07 18:36:12 【问题描述】:我已经阅读了有关此问题的几乎所有可能的内容,但找不到任何可以解决我的问题的内容。 这是我得到的错误日志: 选项 FollowSymLinks 或 SymLinksIfOwnerMatch 关闭,这意味着禁止 RewriteRule 指令:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl
访问站点时,我收到 403 Forbidden “您无权访问此文档。”错误。
我已经修改了我的 .htaccess 文件:
Options +FollowSymLinks +SymLinksIfOwnerMatch
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %HTTP:Authorization ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
.
.
.
我也在 httpd.conf 中添加了这个:
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
<Directory />
Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch
AllowOverride All
</Directory>
接下来我真的可以做什么?
【问题讨论】:
【参考方案1】:注意您的 Web 应用程序所在的目录不包含在另一个限制 FollowSymLinks
的父目录中。
解决方案是在顶层目录(父目录)启用FollowSymLinks
,或者将您的Web应用程序移动到父目录中“无FollowSymLinks
”范围之外的目录。
例如,下一个apache
配置可能是一个问题,它肯定会重现该问题:
<VirtualHost *:80>
...
<Directory "D:/">
Options Indexes
</Directory>
<Directory "D:/mywebfolder/">
Options Indexes FollowSymLinks
</Directory>
...
</VirtualHost>
为了避免这个问题:
<VirtualHost *:80>
...
<Directory "D:/">
Options Indexes FollowSymLinks
</Directory>
...
...
</VirtualHost>
或将您的 D:/mywebfolder/
移动到另一个单元,例如E:/mywebfolder
【讨论】:
【参考方案2】:请注意apache docs for option:
将带有 + 或 - 的选项与没有的混合是无效的语法, 并且将在服务器启动期间被语法检查拒绝 中止。
您在块中混合了带有 +/- 和不带 +/- 的选项(即,请参阅 FollowSymLinks)。
我今天在一个我忘记在选项前面添加“+”的网站上出现了同样的错误。我添加了“+”,它现在可以工作了。
【讨论】:
【参考方案3】:我遇到了这个问题,最后发现因为我将 php 配置为 fast-cgi 而不是作为 apache 模块,所以我必须更新 \conf\extra\httpd-fcgid.conf
然后将 FollowSymLinks
添加到此块
<Files ~ "\.php$">
Options ExecCGI FollowSymLinks
AddHandler fcgid-script .php
FcgidWrapper "d:/php/php-cgi.exe" .php
</Files>
希望这可以帮助某人并节省我浪费的时间。
【讨论】:
救命稻草!!谢谢!! @jiraiya 我现在搬到了 Caddy - 看看caddyserver.com 感谢@TobyAllen!您必须知道,对于使用 httpd-ssl.conf 的人,您也必须在我最近遇到了类似的错误,我为我修复了它。此问题的一个可能根本原因是错误文本本身中提到的目标文件夹(进行重写)没有设置 FollowSymLinks 选项。从您的错误消息中,我看到这个文件夹是:/var/www/vhosts/site.com/httpdocs/cgi-bin/
在这种情况下,您可以在该特定文件夹的 .htaccess 中使用:
Options +FollowSymLinks
上面的这个设置只会在现有选项的顶部添加这个文件夹的 FollowSymLinks(这就是 + 的意思。它只添加这个选项)。
例子:
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
</IfModule>
这就是我遇到错误的情况,这就是我修复它的方法。就我而言,有一个不同的文件夹(不是 cgi-bin)和不同的文件(一个 PHP 文件)。
警告:
确保您确实要重写 URL 以指向 cgi-bin。如果您在这里有重要的脚本,它可能会影响安全性,您可能不希望发生这种重写。如果您在 cgi-bin 中进行此设置,人们将能够在 cgi-bin 中查看您的脚本的输出,除非您知道自己在做什么,否则这可能不好。注意事项:
请注意,根据本地设置/浏览器设置,更新 .htaccess 可能不会在您输入 URL 时立即在浏览器中提供效果,并且可能会立即显示相同的结果,而无需考虑您的对 .htaccess 的修改。在这种情况下,您可能必须重新启动浏览器才能查看修改的效果。对于初学者来说,这在尝试修复时可能非常耗时,并且会混淆为什么它不起作用。另外,如果你修改了httpd.conf(我的帖子不是这样),你必须重新启动网络服务器。
在调查修复我的错误时,我在网上注意到这个错误也发生在某些人身上,对于 Plesk 安装,在这种情况下,该特定问题的解决方案是编辑 /etc/apache2/ mods-enabled/dir.conf,并更新 DirectoryIndex,并将 index.php 移到 index.pl 之前。
【讨论】:
【参考方案5】:把它放在你的根目录中:
<Directory />
#AllowOverride none
Require all denied
Options FollowSymLinks
Options SymLinksIfOwnerMatch
</Directory>
<Directory "root">
Options FollowSymLinks
Options SymLinksIfOwnerMatch
</Directory>
【讨论】:
那个文件名应该是什么?以上是关于选项 FollowSymLinks 或 SymLinksIfOwnerMatch 已关闭的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 选项 FollowSymLinks 错误
打开 RewriteEngine 会产生 403 错误——如何打开 FollowSymLinks?