Token: CSS-Datei oberhalb des Wurzelverzeichnisses der Domain einlesen nicht möglich?

Hallo,

offensichtlich lässt sich eine CSS-Datei oberhalb des Wurzelverzeichnisses der Domain nicht einlesen.

Beispiel: Das Wurzelverzeichnis der Domain XX lautet: /var/www/vhosts/XX/httpdocs/

Jetzt möchte ich eine CSS-datei, die auf /var/www/vhosts/CSS/ liegt mit <link rel='stylesheet' href='/var/www/vhosts/CSS/standard.css'> in eine PHP-Datei einbinden. Bekomme aber immer einen 404er-Fehler. Mache ich da was falsch, oder ist das grundsätzlich nicht möglich?

Andere PHP-Dateien kann ich per include einbinden, nur mit den CSS-Dateien klappt das nicht.

  1. Hallole,

    offensichtlich lässt sich eine CSS-Datei oberhalb des Wurzelverzeichnisses der Domain nicht einlesen.

    das ist richtig; es hat aber nichts mit CSS oder HTML zu tun, sondern generell mit HTTP. Eine Adressierung nach "oberhalb" des Document Root ist prinzipiell nicht möglich.

    Beispiel: Das Wurzelverzeichnis der Domain XX lautet: /var/www/vhosts/XX/httpdocs/

    Jetzt möchte ich eine CSS-datei, die auf /var/www/vhosts/CSS/ liegt mit <link rel='stylesheet' href='/var/www/vhosts/CSS/standard.css'> in eine PHP-Datei einbinden. Bekomme aber immer einen 404er-Fehler.

    Deine URL wird zu http://example.org/var/www/vhosts/CSS/standard.css vervollständigt.

    Mache ich da was falsch, oder ist das grundsätzlich nicht möglich?

    Sowohl als auch. 😉

    Andere PHP-Dateien kann ich per include einbinden, nur mit den CSS-Dateien klappt das nicht.

    PHP ist eine ganz andere Baustelle. PHP adressiert ja direkt über das Filesystem, nicht über HTTP.

    Live long and pros healthy,
     Martin

    --
    Home is where my beer is.
  2. Hallo Token,

    Andere PHP-Dateien kann ich per include einbinden, nur mit den CSS-Dateien klappt das nicht.

    CSS wird vom Browser gelesen, ein INCLUDE vom PHP Script.

    Kurz gesagt:

    • Was der Browser lesen soll, muss vom Browser erreichbar sein.

      • Statische Ressourcen (HTML, CSS, JS, Bilder) werden vom Webserver, vorbei an PHP, direkt zum Browser geliefert und müssen daher in dem Verzeichnisbaum liegen, auf den die Domain zeigt.
      • Für dynamische Ressourcen gilt das gleiche: Eine PHP Datei, die durch einen Browserabruf ausgeführt werden soll, müssen ebenfalls vom Browser auch erreichbar sein.
      • Die ganze Wahrheit ist komplizierter, aber das lasse ich jetzt weg.
    • Was ein PHP Script lesen soll, ist an diese Grenze nicht gebunden. Grundsätzlich kann ein PHP Script alles lesen und schreiben, was der User, unter dem der Webserver läuft, lesen und schreiben kann. Weshalb dieser User so kastriert wie möglich sein muss.

    Wenn Du unbedingt CSS Ressourcen bereitstellen willst, die nicht im Domain-Verzeichnisbaum liegen, brauchst Du einen Vermittler. Das kann man mit Mitteln des Filesystems machen (Links), was aber wenig sinnvoll ist. Man kann es auch mit einem PHP Script machen, dass die Datei von ihrem Ort in die HTTP Response kopiert. Sowas kann z.B. sinnvoll sein um einen User-Login zu prüfen oder je nach Einstellungen des Anwenders (Stichwort: Farbschema oder Skin) andere CSS zu liefern. Oder sie on-the-fly zu modifizieren.

    Rolf

    --
    sumpsi - posui - obstruxi