Domainübergreifende Scripts

XioniX

Member
Hallo,

ich hab da mal ne generelle Frage zu Plesk (8). Ich habe 2 Domains eingerichtet, homepage.domain und counter.domain. Ich wollte nun den PHP Counter BBClone auf counter.domain installieren und damit die Site-Zugriffe von homepage.domain mir anschauen. Dazu muss den PHP Scripten auf homepage.domain etwas PHP Code hinzugefügt werden, der den relativen Pfad zu counter.domain enthält. Mir kommt es aber so vor, als würde es "domainübergreifend" nicht wirklich funktionnieren. Kann mir das jemand bestätigen? Oder ist da mein relativer Pfad falsch angegeben? Dieser wäre von homepage.domain auf counter.domain:
Code:
../../counter.domain/httpdocs/

Vielen Dank im Vorraus!
 
Hallo XioniX,

ich würde sagen, dass du dich mit OpenBasedir auseinandersetzen musst.
Hierzu gibt es viele Beispiele im Forum, also am Besten mal die SuFu benutzen.

Bzgl. deines Paths:
Code:
../../counter.domain/httpdocs/
verstehe ich Einiges nicht.

Denn entweder du wolltest damit eine Subdomain kennzeichnen und hast die TLD (Endung) vergessen.
Oder aber, das 'domain' sollte die TLD kennzeichnen und ist ein wenig unglücklich gewählt.

Wenn du counter.domain.tld und homepage.domain.tld meintest (also Subdomains), dann würden sich diese ja in den Verzeichnissen
Code:
/path/to/plesk/vhosts/domain.tld/subdomains/counter/httpdocs/
und
Code:
/path/to/plesk/vhosts/domain.tld/subdomains/homepage/httpdocs/
befinden.

Du müsstest also wenn du dich im DocumentRoot der 'homepage'-Subdomain befindest 2 Ebenen aufwärts und dann nach
Code:
counter/httpdocs/
.
Also
Code:
../../counter.domain/httpdocs/
.

Wenn du counter.tld und homepage.tld meintest (also TLD's), dann würden sich diese in den Verzeichnissen
Code:
/path/to/plesk/vhosts/counter.tld/httpdocs/
und
Code:
/path/to/plesk/vhosts/homepage.tld/httpdocs/
befinden.
Du müsstest also auch hier - sofern du dich in dem DocumentRoot der 'counter'-Domain befindest - 2 Ebenen aufwärts und dann nach 'homepage.tld/httpdocs/'.
Also
Code:
../../counter.tld/httpdocs/
.

Jetzt ist es allerdings immer so eine Sache mit dem Verlassen des DocumentRoots (dem Verzeichnis in das die Domain 'eingesperrt' ist).
Wenn du bspw. in
Code:
/dein/persönliches/verzeichnis/
eingesperrt bist und in
Code:
/[B]m[/B]ein/persönliches/verzeichnis/
möchtest, dann müsstest du ja eigentlich via
Code:
cd ../../../mein/persönliches/verzeichnis/
wechseln.
Der Server sagt nun aber bei den '..'-Changes, dass du das nicht darfst und würde die ignorieren und wahrscheinlich (so macht es der Apache) in
Code:
/dein/persönliches/verzeichnis/mein/persönliches/verzeichnis/
wechselb wollen.
Wenn du dem Apache jetzt via OpenBasedir sagst, dass der User in
Code:
/mein/persönliches/verzeichnis/
darf, dann wird das DocumentRoot trotzdem höher von den Einschränkungen sein und die '..'-Changes würden weiterhin missachtet werden.
Ich würde dir also raten, dass du via OpenBasedir die Direktive freigibst (informiere dich bitte über Nebeneffekte und wäge dann ab) und dann den Pfad absolut nicht relativ angibst.

Du würdest also statt
Code:
cd ../../../mein/persönliches/verzeichnis/
Code:
cd /mein/persönliches/verzeichnis/
eingeben (aus der Shell Perspektive).
Könntest also auch dem Apache den absoluten Pfad
Code:
/path/to/plesk/vhosts/domain.tld/subdomains/counter/httpdocs/
oder
Code:
/path/to/plesk/vhosts/counter.tld/httpdocs/
mitteilen.

Alternativ hierzu könntest du auch alles in dem selben vHost machen.
Also du könntest das Counter-Script und die Homepage im selben Web laufenlassen und anschließend eine Domain (Sub- oder TLD) in das Verzeichnis des Counter-Scripts forwarden.

Ich hoffe ich konnte ein paar Tipps geben.

Lieben Gruß
Free
 
Vielen Dank für die prompte Antwort :)

Wenn TLD = Topleveldomain heisst, was im meinem Fall .de wäre, dann liegen die verschiedenen Seiten, die ich gern counten möchte alle als Subdomain vor, aber nicht wie man das gewöhnlich in Plesk macht, sondern hab ich jede Subdomain als vollständige Domain eingerichtet! D.h. im Ordner
Code:
var/www/vhosts/
liegen sämtliche Subdomains sowie die Hauptdomain. Für gewöhnlich liegen die Subdomains ja in
Code:
var/www/vhosts/domain.de/subdomains/
Daraus folgt auch, dass ich für jede Subdomain eigene Daten für FTP, ..etc hab.

Wenn ich nun alles in die selbe vHost mache, also wie im regulären Fall, dann müsste ich ja theoretisch von Subdomain1 auf Subdomain2 zugrifen können.

Geht das nun nur, wenn die Subdomains alle den gleichen Benutzeraccount haben, oder geht es auch mit verschiedenen, oder komm ich da wieder nur mit openbasedir-Geschichte weiter?

Nur mal so am Rande, warum ich die Subdomains so eingerichtet hab: Ich habe verschiedene Systeme am laufen (Joomla, phpBB, G2,..), wobei davon manche mit Safemode ON problemlos funktionnieren, manche aber auch nicht. Und im PLesk kann ich bei den Subdomains den Safemode nicht mehr einstellen, d.h. es gilt die Einstellung von der Hauptdomain. Oder gibt es sonst noch eine Möglichkeit, den Safemode auf Subdomains einzustellen? Ich kann ja wenn ich micht als root einlogge auf die httpd.include im config Ordner zugreifen. Dort sind ja die Einstellungen für openbasedir, safemode und weiteres vorhanden. Aber überschreibt mir Plesk die manuellen Einstellungen dann nicht, wenn ich zB ne neue Subdomain anlege?
 
Hi XioniX,

so wie du deine Subdomains angelegt hast müssen wir sie mal als TLDs behandeln um es mit meinem vorherigen Text noch verbinden zu können.
Wenn TLD = Topleveldomain heisst
Jap TLD = TopLevelDomain!

Wenn der einzige Grund für das Anlegen der SLDs als TLDs die Direktiven sind, dann kann ich dir schnell sagen, wie du es 'richtig' machen müsstest.

Es gibt sowohl bei TLDs als auch bei SLDs bei PLESK in dem jeweiligen Verzeichnis ein 'conf' Verzeichnis also z.B.
Code:
/path/to/plesk/vhosts/domain.tld/subdomains/homepage/conf/
Hier findest du eine httpd.include - Datei, welche du ja schon erwähnt hattest.
Hier werden die Settings VON PLESK reingeschrieben und diese Datei darfst DU nicht editieren.
Du kannst aber in dem selben Verzeichnis eine Datei mit dem Namen 'vhost.conf' anlegen.
In dieser nimmst du dann deine vHost-Settings vor.
Anschließend musst du mittels
Code:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=domain.tld
die Datei von PLESK einlesen lassen.
Hierbei steht 'domain.tld' für die Domain um die es sich handelt.
Wenn es z.B. um 'sub.domain.tld' geht und diese auch als SLD angelegt wurde (nicht wie bei dir als TLD) dann musst du trotzdem nur 'domain.tld' bei dem reconfigure Befehl eingeben.
Anschließend musst du den Apache mittels
Code:
/etc/init.d/apache2 reload
reloaden.

Alternativ zu der Open_Basedir methode kannst du dir die 'Alias' Direktive des Apachen mal angucken, diese könnte dir evtl. auch noch helfen.

Wenn es noch Probleme gibt, dann melde dich noch einmal.
Ansonsten viel Erfolg.

Lieben Gruß
Free

PS:
Ich würde mich freuen, wenn du anschließend noch zusammenfassen könntest, wie du es letztlich gelöst hast, da dies sicherlich auch Anderen hier im Board noch helfen kann.
 
nAbend,

also, ich habe jetzt eine vhost.conf mit dem Inhalt
Code:
Alias /counter/ /var/www/vhosts/counter.domain.de/httpdocs/
eingefügt. Nun kann ich mittels http://homepage.domain.de/counter/ auf die Counter Domain zugreifen, jedoch habe ich da keinen PHP Support, den ich wohl bei einem PHP Counter anscheinend benötige.

Ich nehme mal an, dazu müsste ich
Code:
	<IfModule mod_php4.c>
		php_admin_flag engine on
		php_admin_flag safe_mode on
		php_admin_value open_basedir "/var/www/vhosts/domain.de/subdomains/homepage/httpdocs:/tmp"
	</IfModule>
so
Code:
	<IfModule mod_php4.c>
		php_admin_flag engine on
		php_admin_flag safe_mode on
		php_admin_value open_basedir "/var/www/vhosts/domain.de/subdomains:/tmp"
	</IfModule>
in die vhost.conf einfügen und folglich die SLD als Subdomain in Plesk anlegen.
So wäre es wohl dann am "sichersten".
 
Egal, wie weit ich mit open_basedir runtergehe, ich bin immer im Documentroot eingesperrt. Die andere Möglichkeit mit Alias hat soweit auch nicht funktionniert, da ausserhalb des Documentroots kein PHP funktionniert.
 
Hallo!

Beschreibe doch mal genauer, was Du gemacht hast. Ich habe das mal auf meinem Server gestestet und einen für alle Domains gültigen Alias angelegt. Ich kann Dir soweit bestätigen, daß es erforderlich ist, die PHP Engine einzuschalten, da sonst kein PHP funtioniert. Auch war bei mir kein open_basedir aktiv, sodaß ich aus Sicherheitsgründen dieses aktiviert habe. Ich bin mit sicher, daß dies der für Dich richtige Lösungsansatz ist und wir das auch zusammen lösen können.

Gruß flyingoffice
 
Also, ich habe nun jetzt die SubDomains "homepage.domain.de" und "counter.domain.de" über Plesk als Subdomains angelegt.

Danach habe ich eine vhost.conf in das config-Verzeichnis von homepage.domain.de gelegt mit folgendem Inhalt:

Code:
Alias /counter /var/www/vhosts/domain.de/subdomains/counter/httpdocs
<Directory  /var/www/vhosts/domain.de/subdomains/homepage/httpdocs>
	<IfModule mod_php4.c>
		php_admin_flag engine on
	</IfModule>
	<IfModule mod_php5.c>
		php_admin_flag engine on
	</IfModule>
</Directory>
<Directory  /var/www/vhosts/domain.de/subdomains/counter/httpdocs>
	<IfModule mod_php4.c>
		php_admin_flag engine on
	</IfModule>
	<IfModule mod_php5.c>
		php_admin_flag engine on
	</IfModule>
</Directory>

Nun kann ich mit homepage.domain.de/counter/ auf die andere Subdomain zugreifen und PHP geht auch. Jetzt habe nur noch ein kleines Problem mit dem Counten. Dazu muss ich ja in jedem zu zählenden php-File einen Codeschnipsel einbauen, der den Counter ausführt. Das sieht dann in etwa so aus:
Code:
<?php  
 define("_BBCLONE_DIR", "counter/");  
 define("COUNTER", _BBCLONE_DIR."mark_page.php");  
 if (is_readable(COUNTER)) include_once(COUNTER);  
 ?>
Diesen Code habe ich als count.php auf homepage.domain.de geladen und ausgeführt, jedoch klappt das nicht.

Wenn ich jedoch eine Datei mit Inahlt
Code:
<?php  
 define("_BBCLONE_DIR", "");  
 define("COUNTER", _BBCLONE_DIR."mark_page.php");  
 if (is_readable(COUNTER)) include_once(COUNTER);  
 ?>
in counter.domain.de ausführe, dann geht das auch problemlos!

Daher kann es nur am Pfad liegen, aber der stimmt doch eigentlich :confused:
 
Habs leider im letzten Jahr dann aufgegeben, aber im Moment sitze ich wieder dran.

Zum laufen bekomme ich es, aber nur wenn ich den Safemode ausstelle:

in vhost.conf
Code:
	<Directory  /var/www/vhosts/domain.tld/subdomains/homepage/httpdocs>
	<IfModule mod_php4.c>
		php_admin_flag engine on
		php_admin_flag safe_mode off
		php_admin_value open_basedir "/var/www/vhosts/domain.tld/subdomains/homepage/httpdocs:/tmp:/var/www/vhosts/domain.tld/subdomains/counter/httpdocs"
	</IfModule>
	<IfModule mod_php5.c>
		php_admin_flag engine on
		php_admin_flag safe_mode off
		php_admin_value open_basedir "/var/www/vhosts/domain.tld/subdomains/homepage/httpdocs:/tmp:/var/www/vhosts/domain.tld/subdomains/counter/httpdocs"
	</IfModule>
		Options -Includes -ExecCGI
	</Directory>

und absolute Pfade verwende:
Code:
<?php  
define("_BBC_PAGE_NAME", "new");  
define("_BBCLONE_DIR", "/var/www/vhosts/domain.tld/subdomains/counter/httpdocs/");  
define("COUNTER", _BBCLONE_DIR."mark_page.php");  
if (is_readable(COUNTER)) include_once(COUNTER);  
?>

Nur den Safemode ausstellen zu müssen ist ja nicht besonders sicher, also sollte es doch auch mit gehen! Daher hab ich mich mal etwas umgeschaut und die Einstellungen
php_admin_value include_dir "" bzw.
php_admin_value safe_mode_include_dir "" gefunden. Wenn ich aber versuche das einzustellen mit dem entsprechenden Pfaden klappt es leider immer noch nicht.
 
Back
Top