Stammverzeichnis der Homepage ermitteln?

Hallo!

Ich habe ein etwas größeres Problem:

Ich bastle gerade an meiner Homepage. Dafür habe ich
lokal unter Windows XP Apache 2 mit PHP5 laufen.

Das Homepage-Verzeichnis ist
„d:\www\dev\site“

und einer Subdomain „http://site.dev.localhost/“.
Soweit funktioniert alles normal.

Nun habe ich auch einen Webspace (Linux). Darauf
hat die Homepage das Verzeichnis („document_root“)
„/home/sites/www.sybok.com/web/

Die Struktur im Stammverzeichnis sieht etwa so aus:
config/
php/
css/

pages/

Die Homepage besteht aus mehreren PHP-Skripten,
die unter anderem in Unterverzeichnissen von „pages/“
liegen.

Diese Skripten benutzen als includes auch Skripten aus „php/“.

Wie kann ich nun z.B. mit dem Skript „pages/test/test.php“
das Skript „php/list.php“ mit include einbinden OHNE dass ich einen relativen Pfad angebe ("…/…/php/list.php").

Wenn ich „/php/list.php“ angebe, lande ich im Stammverzeichnis des Servers. Und wenn ich den Absoluten Pfad angebe (d:/www/dev/site/php/list.php), wird das Skript „list.php“ als Text-Datei eingebunden (wird nicht ausgeführt).
Wenn ich über die Domain gehe (http://site.dev.localhost/php/list.php) funktioniert es auch nicht!

Wie kann ich also am Besten das Stammverzeichnis meiner Homepage
ermitteln, über das ich dass das Skript einbinden kann?

Ich schon am verzweifeln!

Vielen DAnk im Voraus!!!

MFG, Volker

Moien

Wie kann ich nun z.B. mit dem Skript „pages/test/test.php“
das Skript „php/list.php“ mit include einbinden OHNE dass ich
einen relativen Pfad angebe ("…/…/php/list.php").

Wieso ohne relative Angaben ?

Wenn ich „/php/list.php“ angebe, lande ich im Stammverzeichnis
des Servers.

Korrekt.

Und wenn ich den Absoluten Pfad angebe
(d:/www/dev/site/php/list.php),

Dann husten dir alle Unix-Varianten was.

Wenn ich über die Domain gehe
(http://site.dev.localhost/php/list.php) funktioniert es auch
nicht!

Das ist ein Problem mit den Rechten und Einschränkungen aud php.ini

Wie kann ich also am Besten das Stammverzeichnis meiner
Homepage
ermitteln, über das ich dass das Skript einbinden kann?

Ohne realtive Angaben wird das sehr komplex. Man könnte den Pfad in einer Text-Datei an einer bekannten Stelle ablegen (z.B. bei den Skripten) und dann per „Filesystem Functions“ ein Verzeichniss hoch laufen.

cu

Hallo,

ich hab das folgendermaßen gelöst :

//Scriptpfad holen und Slashes tauschen (damits unter win und *nix funktioniert)
$basedir=str_replace("\","/",$_SERVER[„SCRIPT_FILENAME“]);
//Ein Endshlash erzwingen
$basedir=substr($basedir,0,strrpos($basedir,"/"))."/";

//Unter Windows
c:\meinwebserver\documents\
//Unter *nix
/www/htdocs/home/MeinePage/

Funktioniert bisher vollkommen problemlos.
Den kompletten Source kannst Du auf meiner Page
http://www.machina.ch => download => nu9
runterladen

die Pfadbehandlung liegt in
/_scripts/constants.php

Ich hoffe, daß hilft Dir weiter

Ciao

Sven

Hallo!

ich hab das folgendermaßen gelöst :

//Scriptpfad holen und Slashes tauschen (damits unter win und
*nix funktioniert)
$basedir=str_replace("\","/",$_SERVER[„SCRIPT_FILENAME“]);
//Ein Endshlash erzwingen
$basedir=substr($basedir,0,strrpos($basedir,"/"))."/";

So hab ich auch schon versucht.
Doch wenn ich einen Link mit diesem Pfad versehe, z.B.
href=‚c:/meinwebserver/documents/go.php‘
dass wird mir das PHP-Skript als Text-Datei im Browser
ausgegeben.

//Unter Windows
c:\meinwebserver\documents\
//Unter *nix
/www/htdocs/home/MeinePage/

Funktioniert bisher vollkommen problemlos.
Den kompletten Source kannst Du auf meiner Page
http://www.machina.ch => download => nu9
runterladen

Vielen Dank für den Tipp! Aber ich hab schon eine komplette
Homepage.

die Pfadbehandlung liegt in
/_scripts/constants.php

Ich hoffe, daß hilft Dir weiter

Leider nicht. Sieht so aus, als müsste ich bei meiner alten
Bauweise bleiben.
Trotzdem vielen Dank!

Ciao

Sven

Sorry,

hab’ die Frage anders verstanden

Doch wenn ich einen Link mit diesem Pfad versehe, z.B.
href=‚c:/meinwebserver/documents/go.php‘
dass wird mir das PHP-Skript als Text-Datei im Browser
ausgegeben.

In der Variablen SCRIPT_URI liegt der „http-pfad“ zu dem aufrufenden Script. Dort könntest Du dann Deinen Basispfad rausziehen.

echo $\_SERVER["SCRIPT\_URI"];
=\> http://localhost/index.php

Ist es das, was Du suchst ?

Ciao

Sven

Keine Sessioninformationen mehr!!!
Hallo!

So habe ich es auch gemacht.

Ich hatte den absoluten Server-Pfad (bei mir d:/www/dev/site/)
und versucht, mit file_get_contents die Ausgabe eines
PHP-Skriptes auszulesen. Stattdessen wurde das gesamte PHP-Skript
im Browser als Text angezeigt. War natürlich ein riesen Problem.
Dann habe ich statt dem Serverpfad den absoluten Pfad über die Domain genommen. Dann wurde das Skript korrekt ausgelesen.

Naja, fast! Es hat sich dann wieder ein Problem aufgetan, bei dem ich jetzt absolut keine Ahnung habe, wie ich es lösen soll:

PHP-Skripte auslesen geht jetzt also.
Skript A liest mit file_get_contents Skript B aus. Soweit so gut. Nun hat Skript A auch einige Informationen in die Session geschrieben, die nun Skript B auslesen soll. Und da liegt das Problem. Skript B hat nämlich uberhaupt keine Sessioninformationen. Der Grund:
Durch diesen Aufruf wurde keine SessionID an das Skript weitergegeben (" $_SERVER"). Doch ich brauche diese Sessioninformationen unbedingt!

Hast du eine Ahnung, was ich da machen könnte???

MFG, Volker

Hallo,

also wenn ich alles richtig verstehe geht das so vor sich :

Script A =\> file\_get\_contents("http://meineseite.de/scriptb.php");

Script B =\> macht Zeugs (auch mit Sessionvariablen)

Script A erhält das Ergebnis von Script B

Ehrlich gesagt finde ich die Konstruktion mit file_get_contents nicht sehr glücklich, aber seis drum.

Die Werte kannst Du einfach so übergeben :

file\_get\_contents("http://meineseite.de/scriptb.php?MeineID=12345");