Raketenwilli: Beispiel: Anderer Hoster

Beitrag lesen

Bei meinem Hoster sah das so aus, dass es am Anfang

/homepages/uYXZ

gab. Darin habe ich SELBST die Ordner für die unterschiedlichen Domains angelegt:

/homepages/uYXZ
   /Domain_1
   /Domain_2
   …
   /Domain_N

und die Ordner in der mir zur Verfügung gestellten Verwaltung den jeweiligen Hostnamen/Domains zugeordnet (Domain_1 hat also /homepages/uYXZ/Domain_1) als Serverroot (= $_SERVER['DOCUMENT_ROOT']).

Da ich einmal beim Verzeichnisse anlegen war hab ich weiter gemacht:

/homepages/uYXZ
   /Domain_1
      /libs
   /Domain_2
      /libs
   …
   /Domain_n
      /libs
   /private
   /shared_libs

In den Skripten includiere ich dann ganz stumpf folgendes Skript:

<?php
### file: settings.php

## Verzeichnis für private Daten:
## (Nicht via HTTP[S] abrufbar.)
define( 
    'private_dir',
    realpath(
        $_SERVER['DOCUMENT_ROOT']
        . '/../private'
    ) . '/'
);

## Verzeichnis für Libarys, die von mehr
## als einer Webseite genutzt werden:
## (Nicht via HTTP[S] abrufbar.)
define( 
    'shared_libs_dir',
    realpath(
        $_SERVER['DOCUMENT_ROOT']
        . '/../shared_libs'
    ) . '/'
);

## Libarays für nur einen Webauftritt:
## (ACHTUNG: Via HTTP[S] abrufbar.)
define( 
    'libs_dir',
    realpath(
        $_SERVER['DOCUMENT_ROOT']
        . '/libs'
    ) . '/'
);
  • (Daran denken: Das ?> am Ende von zu inkludierenden Dateien ist nicht nur nicht nötig, sondern sehr oft schädlich!)
  • Das ich am Ende den Verzeichnisstrenner erzwinge (realpath() würde ihn löschen) hat den Vorteil, dass ich ihn nicht vergessen kann. Etwas wie
reguire_once( shared_libs_dir . '/mysql_connect.php' );

würde dann eben zu

reguire_once( '/homepages/uYXZ/shared_libs//mysql_connect.php' );

und der doppelte Verzeichnisstrenner (//) ist unschädlich, was das Vorgen „failsave“ macht - im Falle, dass man dessen Angabe vor dem Dateiname vergisst.

Hinweise:

  • Man sollte im Kopf behalten, dass die Dateien im libs_dir (eventuell) sehr wohl öffentlich abrufbar sind, die im private_dir und im shared_libs_dir nicht.
  • Natürlich muss man bei einem Serverumzug bei der Verzeichnisstruktur bleiben und die notwendigen Dateien aus ../private und ../shared_libs mit kopieren.