PHP in anderem Ordner ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
S_O
Beiträge: 138
Registriert: 25.02.2005 12:38:44

PHP in anderem Ordner ausführen

Beitrag von S_O » 01.08.2006 18:39:29

Hallo,
ich hab ein kleines Problem mit PHP, wie bringe ich PHP bei, ein Script in einem anderen Ordner auszuführen?
Das Problem:
Ich habe einen Ornder /var/www/a/
und einen Ordner /var/www/b/
Im Ornder a gibt es einen symbolischen Link auf a:
/var/www/a/b/ ist /var/www/b

Wenn ich jetzt ein Script /var/www/a/b/script.php ausführe, verhält es sich, als sei es /var/www/b/script.php. Wenn man z.B. include('../include.php') macht bindet er /var/www/include.php ein, er soll aber nach /var/www/a/include.php einbinden.

Wie kann ich das einstellen
a) In libapache2-modphp5
b) Welche Umgebungsvariable für CGI muss ich setzen, damit er das macht?

Derzeit habe ich ($filename = 'script.php'; $path='/var/www/a/b/'):

Code: Alles auswählen

$env = array('QUERY_STRING' => $query, 'REQUEST_METHOD' => 'GET', 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 	'DOCUMENT_ROOT' => substr($path,0,-1), 'SCRIPT_FILENAME'=>$path.$filename, 'SCRIPT_NAME'=>$filename, 'SERVER_NAME'=>'localhost','SERVER_ADDR'=>'127.0.0.1', 'PATH_TRANSLATED' => substr($path,0,-1));
Viele Grüße,
S_O

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 01.08.2006 19:37:17

Von den Web- und Mailservern weggeschoben.

bye, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

S_O
Beiträge: 138
Registriert: 25.02.2005 12:38:44

Beitrag von S_O » 01.08.2006 19:50:25

Huh? Es geht doch um Apache-Konfiguration und CGI (bzg. PHP), das gehört doch zu Webservern?

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 01.08.2006 20:35:59

Ist doch eher zu php Programmiereng. Am Apache kannst du da meiner Meinung nicht viel drehen. Die Umgebungsvariable PWD kannst du nicht aendern.

Aber: warum willst du das ueberhaeupt so kompleziert machen? Von einem Verzeichnis in ein anderes linken?! Vielleicht gibt es dafuer eine bessere Loesung....

bye, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

S_O
Beiträge: 138
Registriert: 25.02.2005 12:38:44

Beitrag von S_O » 01.08.2006 21:37:17

Vielleicht. Mir ist keine eingefallen.
Verzeichnis b liegt in einem Verzeichnis-Baum der über FTP zugänglich ist, Verzeichnis a ist der eigentliche Ornder der website.
Ich habe nun also eine Datei, die einfach per FTP hochgeladen wird und dann innerhalb der website liegen soll. Ich kann also Ornder b nicht in a reinkopieren.
Was kann ich da sonst machen? Ich habe auch Alias probiert, klappt auch nicht.

Für CGI, da kann ich die Umgebungsvariablen doch ändern (ich muss sie ja alle selber definieren), kann ich da einfach "PWD" definieren und denn nimmt er das Verzeichnis? Das glaub ich nicht, ich untersuche schon den Quellcode des PHP-CGI-Frontends, hab aber keinen Hinweis darauf gefunden.

Ich hab auch schon versucht den INI-Eintrag doc_root zu setzen, alles ohne Erfolg. Was kann ich da machen?

Viele Grüße,
S_O

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 02.08.2006 09:17:49

Hm, wie waere es, wenn du im Skript einfach den kompletten Pfad fuer dein Include angibst?
Seh ich das falsch oder soll an beiden Stellen, also /var/www/a und /var/www/b immer die gleiche Include.php geladen werden?
Wenn ja, sollte ein

Code: Alles auswählen

include("/var/www/a/include.php");
doch Abhilfe schaffen.
Oder hab ich das nun falsch verstanden?

S_O
Beiträge: 138
Registriert: 25.02.2005 12:38:44

Beitrag von S_O » 11.08.2006 22:24:47

Arghh.... Ich war mir eigentlich sicher ich hätte den Beitrag abgesendet bevor ich den PC abgeschaltet hätte, dem war aber wohl nicht so. Den brauch ich mich auch nicht zu wundern das keine Antworten kommen...
Hm, wie waere es, wenn du im Skript einfach den kompletten Pfad fuer dein Include angibst?
Seh ich das falsch oder soll an beiden Stellen, also /var/www/a und /var/www/b immer die gleiche Include.php geladen werden?
Wenn ja, sollte ein
Code:
include("/var/www/a/include.php");
doch Abhilfe schaffen.
Oder hab ich das nun falsch verstanden?
Theoretisch eine gute Idee, praktisch aber schlacht aus folgendem Grund:
Die Datei soll möglichst ohne Änderungen in einen anderen Order kopiert werden können wie /var/www/c/d und dort ../include.php einbinden, die jetzt natürlich in /var/www/c liegt und nicht in /var/ww/a.

Ich werde jetzt doch noch mal etwas weiter ausholen damit man das versteht:
Es geht um eine Homepage. Die wird über Subversion verwaltet. ein pre-commit hook-script überprüft jede hochgeladene PHP-Datei automatisch auf PHP und XHTML-validität und so was. Ich habe zwei branches eine haupt-branch (trunk), in der die hauptseite liegt (http://www.meine-domain.tld) und eine interne branch (testing) in der neue Sachen ausprobiert werden und dann überspielt (test.meine-domain.tld) werden.
Natürlich wird dort jede Änderung von Subversion erfasst und man kann auch nur gültiges XHTML und so einspielen. Es gibt jedoch Situationen, da möchte an um Subversion herum was machen, weil man nicht 300 revisionen weghauen möchte nur weil man an einer seite bastelt, oder auch einfach das man seinen Fehler nicht findet und ihn dort überprüfen möchte.
Daher möchte ein Ornder der über FTP zugänglich ist nach test.meine-domain.tld/experimental linken, um dort Dateien an Subversion vorbei in die Homepage zu bekommen. Dazu muss ich PHP einreden das die Datei dort auch liegt und nicht in dem FTP-Ordner.

Ich hoffe mein Problem ist jetzt etwas einfacher nachzuvollziehen.

Viele Grüße,
S_O

Antworten