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 imprivate_dir
und imshared_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.