Options FollowSymLinks ou SymLinksIfOwnerMatch est désactivé

j'ai lu presque tout ce qui est possible pour ce problème et je n'ai rien trouvé qui pourrait résoudre mon problème. C'est le journal des erreurs que je reçois: Options FollowSymLinks ou SymLinksIfOwnerMatch est désactivé ce qui implique que la directive RewriteRule est interdite: /var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl

lors de l'accès au site je reçois 403 Interdit "vous n'avez pas la permission d'accéder à ce document." erreur.

j'ai modifié la mienne .htaccess pour avoir ceci:

Options +FollowSymLinks +SymLinksIfOwnerMatch
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
.
.
.

j'ai aussi ajouté ceci à httpd.conf:

AddHandler cgi-script .cgi
AddHandler cgi-script .pl

<Directory />
Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch
AllowOverride All
</Directory>

Vraiment que puis-je faire ensuite?

28
demandé sur User97693321 2012-08-10 16:48:10

5 réponses

Regardez que le répertoire où vit votre application web n'est pas inclus dans un autre répertoire parent qui a restreint FollowSymLinks.

La solution est d'activer FollowSymLinks dans le répertoire supérieur (répertoire parent) ou déplacez votre application web dans un répertoire en dehors du champ d'application du "non FollowSymLinks" dans le répertoire parent.

Par exemple, les apache config pourrait être un problème et sûrement, il reproduit le problème:

    <VirtualHost *:80>
      ...  
      <Directory "D:/">
        Options Indexes
      </Directory>

      <Directory "D:/mywebfolder/">
        Options Indexes FollowSymLinks
      </Directory>
      ...
   </VirtualHost>

Pour éviter cela problème:

    <VirtualHost *:80>
      ...  
      <Directory "D:/">
        Options Indexes FollowSymLinks
      </Directory>
      ...
      ...
   </VirtualHost>

Ou déplacer votre D:/mywebfolder/ à une autre unité, par exemple,E:/mywebfolder

17
répondu Hokusai 2015-06-07 19:19:23

notez ceci de la apache docs pour l'option:

mélanger les Options avec un + ou - avec celles sans n'est pas une syntaxe valide, et seront rejetés lors du démarrage du serveur par la vérification de syntaxe avec un interrompre.

vous mélangez des options avec + / - et sans dans votre bloc (i.e. voir les liens suivants).

j'ai eu ce même erreur exact montrant jusqu'à aujourd'hui sur un de mes sites où j'avais oublié d'ajouter un "+" devant un option. J'ai ajouté le "+" et maintenant cela fonctionne.

11
répondu user12345 2015-06-07 19:23:29

j'ai eu ce problème et j'ai finalement trouvé que parce que j'avais php configuré avec fast-cgi plutôt que comme un module apache, j'ai dû mettre à jour le \conf\extra\httpd-fcgid.conf puis ajouter FollowSymLinkspour ce bloc

<Files ~ "\.php$">
Options ExecCGI FollowSymLinks
AddHandler fcgid-script .php
FcgidWrapper "d:/php/php-cgi.exe" .php
</Files>

J'espère que cela aidera quelqu'un et sauvera les heures que j'ai gaspillées.

8
répondu Toby Allen 2016-02-07 18:26:26

j'ai récemment eu une erreur similaire et je l'ai corrigé pour moi. Une cause possible de ce problème est que le dossier cible (vers lequel la réécriture est faite), mentionné dans le texte d'erreur lui-même, n'a pas D'option FollowSymLinks. D'après votre message d'erreur, je vois que ce dossier est: /var/www/vhosts/site.com / httpdocs / cgi-bin/

Dans ce cas, vous pouvez utiliser .htaccess de ce dossier spécifique:

Options +FollowSymLinks

ce paramètre ci-dessus va juste ajouter les liens suivants pour ceci dossier en plus des options existantes (c'est ce que + signifie. il ajoute seulement cette option).

Exemple:

<IfModule mod_rewrite.c>
  RewriteEngine On
  Options +FollowSymLinks
</IfModule>

C'est le cas où j'ai eu l'erreur et c'est comme ça que je l'ai corrigée. Dans mon cas, il y avait un dossier différent (pas cgi-bin) et un fichier différent (un fichier PHP).

Avertissement:

  • assurez-vous que vous voulez vraiment réécrire L'URL pour pointer vers cgi-bin. Si vous avez des scripts importants ici, cela pourrait avoir un impact sur la sécurité et vous pourriez ne pas vouloir cette réécriture pour arriver. Si vous faites ce réglage dans cgi-bin, les gens pourraient voir la sortie de vos scripts dans cgi-bin, ce qui pourrait ne pas être bon à moins que vous sachiez ce que vous faites.

Notes:

  • veuillez noter que selon les paramètres locaux / les paramètres du navigateur, la mise à jour du .htaccess peut ne pas fournir l'effet dans le navigateur instantanément, lorsque vous tapez dans L'URL, et peut afficher le même résultat tout de suite, sans tenir compte de votre les modifications .htaccess. Dans ce cas, vous devrez peut-être redémarrer le navigateur pour voir l'effet de vos modifications. Pour les débutants, cela peut prendre beaucoup de temps en essayant de corriger, et de confusion sur la raison pour laquelle il ne fonctionnera pas. Aussi, si vous modifiez httpd.conf (pas le cas dans mon post), vous devez redémarrer le serveur web.

  • en recherchant pour corriger mon erreur, j'ai remarqué sur le web que cette erreur s'est aussi hapsée pour certaines personnes, pour une installation Plesk, auquel cas la solution à ce problème spécifique était d'éditer /etc/apache2/mods-enabled/dir.conf et mettre à jour DirectoryIndex, et déplacer l'index.php avant index.pl.

4
répondu Nicolae Bacrau 2014-09-15 09:18:46

Mettez ceci dans votre répertoire racine:

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

<Directory "root">
    Options FollowSymLinks
    Options SymLinksIfOwnerMatch 
</Directory>
0
répondu Adrian B 2014-03-04 11:26:17