it-roy-ru.com

Параметры 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>

Действительно, что я могу сделать дальше?

29
user1590251

Следите за тем, чтобы каталог, в котором находится ваше веб-приложение, не был включен в другой родительский каталог с ограничением 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

18
Hokusai

Обратите внимание на это в документации Apache для option

Смешивание опций с + или - с теми, кто не имеет недопустимый синтаксис, и будет отклонен во время запуска сервера при проверке синтаксиса с прервать.

Вы смешиваете варианты с +/- и без в вашем блоке (т.е. смотрите FollowSymLinks). 

У меня была такая же точная ошибка, которая появилась сегодня на одном из моих сайтов, где я забыл добавить «+» перед опцией. Я добавил «+», и теперь это работает. 

11
user12345

У меня возникла эта проблема, и в конце концов я обнаружил, что поскольку я настроил 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>

Надеюсь, это поможет кому-то и сэкономит часы, которые я потратил впустую.

9
Toby Allen

Недавно у меня была похожая ошибка, и я исправил ее для себя. Одной из основных причин этой проблемы является то, что в целевой папке (для которой выполняется перезапись), упомянутой в самом тексте ошибки, не установлена ​​опция 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
Nicolae Bacrau

Поместите это в свой корневой каталог:

<Directory />
    #AllowOverride none
    Require all denied
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch 
</Directory>

<Directory "root">
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch 
</Directory>
0
Adrian B