it-swarm.dev

Die Optionen FollowSymLinks oder SymLinksIfOwnerMatch sind deaktiviert

Ich habe fast alles Mögliche für dieses Problem gelesen und konnte nichts finden, was mein Problem lösen könnte ... Dies ist ein Fehlerprotokoll, das ich bekomme: Optionen Optionen FollowSymLinks oder SymLinksIfOwnerMatch ist deaktiviert, was bedeutet, dass die RewriteRule-Direktive verboten ist : /var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl 

Beim Zugriff auf die Site bekomme ich 403 verboten. "Sie haben keine Berechtigung, auf dieses Dokument zuzugreifen." Error.

Ich habe meinen .htaccess geändert, um folgendes zu haben:

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

Ich habe dies auch zu httpd.conf hinzugefügt:

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

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

Wirklich was kann ich als nächstes tun?

29
user1590251

Achten Sie darauf, dass das Verzeichnis, in dem sich Ihre Webanwendung befindet, nicht in einem anderen übergeordneten Verzeichnis enthalten ist, für das FollowSymLinks eingeschränkt ist.

Die Lösung besteht darin, FollowSymLinks im obersten Verzeichnis (übergeordnetes Verzeichnis) zu aktivieren oder Ihre Webanwendung in ein Verzeichnis außerhalb des Bereichs von "no FollowSymLinks" im übergeordneten Verzeichnis zu verschieben.

Zum Beispiel könnte die nächste Apache config ein Problem sein und das Problem wird sicherlich reproduziert:

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

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

Um dieses Problem zu vermeiden:

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

Oder verschieben Sie Ihren D:/mywebfolder/ in eine andere Einheit, z. E:/mywebfolder

18
Hokusai

Beachten Sie dies aus den Apache-Dokumenten für Option

Das Mischen von Optionen mit einem + oder - mit denen ohne ist keine gültige Syntax und wird während des Serverstarts von der Syntaxprüfung mit einem .__ abgelehnt. abbrechen.

Sie mischen Optionen mit +/- und ohne in Ihrem Block (d. H. Siehe FollowSymLinks). 

Ich hatte genau diesen Fehler, der heute auf einer meiner Websites angezeigt wurde, auf der ich vergessen hatte, ein "+" vor einer Option hinzuzufügen. Ich habe das "+" hinzugefügt und es funktioniert jetzt. 

11
user12345

Ich hatte dieses Problem und fand schließlich heraus, dass ich, da ich PHP mit fast-cgi anstatt als Apache-Modul konfiguriert hatte, den \conf\extra\httpd-fcgid.conf aktualisieren musste und dann FollowSymLinks zu diesem Block hinzufügte

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

Hoffe, das hilft jemandem und spart die Stunden, die ich verschwendet habe.

9
Toby Allen

Ich hatte kürzlich einen ähnlichen Fehler und habe ihn für mich behoben. Eine mögliche Hauptursache für dieses Problem ist, dass für den im Fehlertext genannten Zielordner (in den die Umschreibung erfolgt ist) die Option FollowSymLinks nicht festgelegt ist. Von Ihrer Fehlermeldung aus sehe ich diesen Ordner: /var/www/vhosts/site.com/httpdocs/cgi-bin/

In diesem Fall können Sie in .htaccess dieses bestimmten Ordners verwenden:

Options +FollowSymLinks

Diese Einstellung oben fügt einfach die FollowSymLinks für diesen Ordner über den vorhandenen Optionen hinzu (dafür steht +. Es wird nur diese Option hinzugefügt).

Beispiel:

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

Dies war der Fall, bei dem ich den Fehler hatte, und so wurde er behoben. In meinem Fall gab es einen anderen Ordner (nicht cgi-bin) und eine andere Datei (eine PHP -Datei).

Warnung:

  • Stellen Sie sicher, dass Sie die URL wirklich so umschreiben möchten, dass sie auf cgi-bin verweist. Wenn Sie wichtige Skripts hier haben, kann dies die Sicherheit beeinträchtigen und Sie möchten möglicherweise nicht, dass diese Umschreibung erfolgt. Wenn Sie diese Einstellung in cgi-bin vornehmen, können Benutzer die Ausgabe Ihrer Skripte in cgi-bin anzeigen. Dies ist möglicherweise nicht gut, wenn Sie nicht wissen, was Sie tun.

Anmerkungen:

  • Beachten Sie, dass die Aktualisierung von .htaccess abhängig von den lokalen Einstellungen/Browsereinstellungen möglicherweise nicht sofort beim Eintippen der URL im Browser auftritt und dasselbe Ergebnis sofort anzeigt, ohne Ihre Änderungen an .htaccess zu berücksichtigen. In diesem Fall müssen Sie möglicherweise den Browser neu starten, um die Auswirkungen Ihrer Änderungen zu sehen. Für Anfänger kann dies sehr zeitaufwändig sein, wenn Sie versuchen, das Problem zu beheben, und verwirren, warum es nicht funktioniert. Wenn Sie httpd.conf ändern (nicht in meinem Beitrag), müssen Sie den Webserver neu starten.

  • Bei der Suche nach Korrekturen für meinen Fehler habe ich im Web festgestellt, dass dieser Fehler auch für einige Personen bei einer Plesk-Installation aufgetreten ist. In diesem Fall bestand die Lösung für dieses spezifische Problem darin,/etc/Apache2/mods-enabled/dir zu bearbeiten. conf und aktualisiere DirectoryIndex und verschiebe index.php vor index.pl.

5
Nicolae Bacrau

Fügen Sie dies in Ihr Stammverzeichnis ein:

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

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