doc_root bei virtuellen Servern setzen

doc_root bei virtuellen Servern setzen

am 08.06.2005 19:42:33 von Michel Koller

Guten Tag

Ich betreue einen IIS Server mit mehreren virtuellen Domains.

wenn ich dieDatei PHP.ini konfiguriere, Was muss ich bei
der Direktive "doc_root =" für einen Pfad aingeben, wenn ich virtuelle
Server habe?

Meines wissens nach gehört dort der Pfad zum Wurzelverzeichnis wo PHP
ausgeführt werden soll,
aber was ist wenn man mehrere Virtuelle Server hat?

Ich arbeite an einem Skript das die Variable $_SERVER[DOCUMENT_ROOT]
benutzt, und die ist in diesem Fall halt immer Leer.

Danke für jeden Tip
Michel Koller

Re: doc_root bei virtuellen Servern setzen

am 08.06.2005 22:29:12 von Thomas Hamacher

Michel Koller schrieb:

> Ich betreue einen IIS Server mit mehreren virtuellen Domains.

Freiwillig oder zwangsweise? PHP auf dem IIS ist nicht so das wahre.

> wenn ich dieDatei PHP.ini konfiguriere, Was muss ich bei
> der Direktive "doc_root =" für einen Pfad aingeben, wenn ich virtuelle
> Server habe?

Gar keinen oder halt auf vHost-Ebene die Documentroot des jeweiligen
vHosts. Letzteres würde allerdings bedeuten, dass du verschiedene
php.ini Dateien für die einzelnen vHosts benutzt. Ob und wie das möglich
ist weiss ich allerdings nicht.

Alternativ kannst du die Variable selber durch eine auto_prepend Datei
setzen. In der Datei kannst du das Verzeichnis des eigentlich
aufgerufenen Scripts ermitteln, dann in einer Datei oder Datenbank den
Pfad mit den Pfaden der vHosts vergleichen und dann die Variable setzen.

So in etwa (ungetestet):

// Auto-prepend-file
$vhosts = array(
'a' => 'd:/www/a/htdocs',
'b' => 'd:/www/b/htdocs',
// usw
);

foreach($vhosts as $vhost) {
if(preg_match("°^$vhost/°", $_SERVER['SCRIPT_FILENAME'])) {
$_SERVER['DOCUMENT_ROOT'] = $vhost;
}
}

unset($vhosts, $vhost);
?>