web-dev-qa-db-fra.com

Options FollowSymLinks ou SymLinksIfOwnerMatch est désactivé

J'ai lu presque tout ce qui était possible sur ce problème et je ne trouvais rien qui puisse résoudre mon problème. : /var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl 

En accédant au site, j'obtiens 403 Forbidden "Vous n'êtes pas autorisé à accéder à ce document." Erreur.

J'ai modifié mon .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?

29
user1590251

Vérifiez que le répertoire dans lequel réside votre application Web n'est pas inclus dans un autre répertoire parent qui a restreint FollowSymLinks.

La solution consiste à activer FollowSymLinks dans le répertoire principal (répertoire parent) ou à déplacer votre application Web vers un répertoire situé en dehors du champ "no FollowSymLinks" dans le répertoire parent.

Par exemple, la prochaine Apache config pourrait être un problème et le reproduira sûrement:

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

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

Pour éviter ce problème:

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

Ou déplacez votre D:/mywebfolder/ vers une autre unité, par ex. E:/mywebfolder

18
Hokusai

Notez ceci à partir de la documentation Apache pour l'option

Mélanger les options avec un + ou - avec ceux sans est une syntaxe non valide, et sera rejeté lors du démarrage du serveur par la vérification de la syntaxe avec un avorter.

Vous mélangez les options avec +/- et sans dans votre bloc (c'est-à-dire, suivezSymLiens). 

J'ai eu la même erreur exacte aujourd'hui sur l'un de mes sites où j'avais oublié d'ajouter un "+" devant une option. J'ai ajouté le "+" et cela fonctionne maintenant. 

11
user12345

J'ai eu ce problème et j'ai finalement trouvé que, parce que j'avais php configuré avec fast-cgi plutôt qu'en tant que module Apache, je devais mettre à jour le \conf\extra\httpd-fcgid.conf puis ajouter FollowSymLinksto ce bloc

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

J'espère que cela aide quelqu'un et évite les heures que j'ai perdues.

9
Toby Allen

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

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

Options +FollowSymLinks

Ce paramètre ci-dessus ne fera qu'ajouter les FollowSymLinks de ce dossier au-dessus des options existantes (c'est ce que + signifie. Il ne fait qu'ajouter cette option).

Exemple:

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

Ce fut le cas où j'ai eu l'erreur et c'est comment je l'ai corrigé. Dans mon cas, il y avait un dossier différent (pas cgi-bin) et un fichier différent (un fichier PHP).

Attention:

  • Assurez-vous que vous voulez vraiment réécrire l'URL pour pointer vers cgi-bin. Si vous avez des scripts importants ici, cela peut avoir un impact sur la sécurité et vous souhaiterez peut-être que cette réécriture ne se produise pas. Si vous définissez ce paramètre dans cgi-bin, les utilisateurs pourront visualiser la sortie de vos scripts dans cgi-bin, ce qui risque de ne pas être utile si vous ne savez pas ce que vous faites.

Remarques:

  • Veuillez noter qu'en fonction des paramètres locaux/du navigateur, la mise à jour du fichier .htaccess peut ne pas fournir l'effet immédiatement dans le navigateur, lorsque vous tapez l'URL, et peut afficher le même résultat immédiatement, sans prendre en compte vos modifications apportées au fichier .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 lorsque vous essayez de le réparer, et vous demander pourquoi cela ne fonctionne pas. De plus, si vous modifiez httpd.conf (ce qui n'est pas le cas dans mon post), vous devez redémarrer le serveur Web.

  • En cherchant des solutions à mon erreur, j'ai remarqué sur le Web que cette erreur s'était également produite pour certaines personnes lors d'une installation de Plesk. Dans ce cas, la solution à ce problème spécifique consistait à éditer/etc/Apache2/mods-enabled/dir. conf et mettre à jour DirectoryIndex et déplacer index.php avant index.pl.

5
Nicolae Bacrau

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
Adrian B