Symbolische Links ohne Shell-Zugriff

Bei meinem Hoster all-inkl.com gibt es für kleines Geld nahezu alles, was das Herz begehrt, nur leider keinen Shell-Zugang via ssh. Für einen Ordner mit geteilten Resourcen, der jedoch auf verschiedenen Subdomains (und somit in verschiedenen Ordner) über den gleichen relativen Pfad erreichbar sein sollte, schien mir die beste Lösung ein symbolischer Link.

Unter einer Shell reicht ein kurzer, knackiger Befehl, schon gibt es einen Sym-Link (Apple-Menschen nennen das auch gerne mal Alias, Windows kennt es als Verknüpfung):

ln -s /pfad/zu/original /pfad/zu/sym-link

Ein symbolischer Link kann Dateien oder Ordner verlinken. Ruft man einen symbolischen Link auf, so werden die Inhalte des Originals angezeigt.

In PHP gibt es eine Funktion namens symlink die ebenfalls symbolischen Links erzeugen kann. Bei all-inkl funktioniert symlink() jedoch nicht, wenn man PHP nicht als CGI ausführt, daher gibt es zwei Möglichkeiten:

  1. Datei mit der Erweiterung phpx abspeichern. .phpx wird als CGI ausgeführt und kann dadurch auch symlink() nutzen.
  2. Zugriff durch .htaccess. Durch eine Anpassung der .htaccess-Datei lassen sich alle PHP-Dateien als CGI ausführen und somit exec nutzen. In die .htaccess muss folgendes eingefügt werden:

Bei Nutzung von PHP5 im CGI-Modus

AddHandler php5-cgi .php #Bei Nutzung von PHP4 im CGI-Modus
AddHandler php4-cgi .php

Da ich etwas bequem bin, möchte ich nicht für jedes einzelne Symlink die PHP-Datei anpassen. Stattdessen nutze ich ein einfaches Formular, in dem ich Original und Symlink angeben kann. Damit niemand Schindluder mit dieser Funktion treibt, liegt die symlink.phpx in einem mittels .htaccess gesicherten Verzeichnis.

Der Inhalt der Datei ist vergleichsweise simpel:

Sym-Linker

‘; echo ‘

Aktueller Pfad: ‘ . getcwd() . ‘

‘; echo ‘

‘; echo ‘‘; echo ‘Original: ‘; echo ‘Sym-Link: ‘; echo ‘‘; echo ‘
‘; } ?>

Download symlink.phpx.

Author image
Blogging since 2003 about life, tech, yoga. Passionate about the details and eager to know more. Systems theory meets empathy.
Bochum. Germany.
top