Параметры FollowSymLinks или SymLinksIfOwnerMatch отключены
Я прочитал почти все возможное для этой проблемы и не смог найти ничего, что могло бы решить мою проблему.
Это журнал erorr, который я получаю:
Параметры FollowSymLinks или SymLinksIfOwnerMatch отключены, что означает, что директива RewriteRule запрещена:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl
При доступе к сайту я получаю 403 Запрещено "У вас нет разрешения на доступ к этому документу". ошибка.
Я изменил свой .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
Следите, чтобы каталог, в котором проживает ваше веб-приложение, не входит в другой родительский каталог с ограниченным FollowSymLinks
.
Решение состоит в том, чтобы включить FollowSymLinks
в верхнем каталоге (родительский каталог) или переместить веб-приложение в каталог за пределами области "no 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 для опции:
Параметры смешивания с + или - с теми, у кого нет, недействительный синтаксис, и будет отклонен при запуске сервера с помощью проверки синтаксиса с помощью прервать операцию.
Вы смешиваете опции с +/- и без вашего блока (т.е. см. 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>
Надеюсь, что это поможет кому-то и сохранит часы, которые я потратил впустую.
Ответ 4
Недавно у меня была аналогичная ошибка, и я исправил ее для меня. Одна из возможных причин этой проблемы заключается в том, что целевая папка (к которой выполняется переписывание), упомянутая в самом тексте ошибки, не имеет опции 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/apache 2/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>