BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP Pfadproblem (http://www.black-board.net/thread.php?threadid=23708)


Geschrieben von phlox81 am 27.04.2009 um 19:04:

  PHP Pfadproblem

Hallo,

beim Aufruf einer PHP Klasse in einer Webanwendung bekomme ich folgende Fehler:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
Export fehlgeschlagen.

Fehlertext:

Warning: xtcommerce::require_once() [function.require-once]: open_basedir restriction in effect. File(...shop/admin/includes/configure.php) is not within the allowed path(s): (/var/www/vhosts/mydomain/httpdocs:/tmp) in /var/www/vhosts/mydomain/httpdocs/classes/xtcommerce.class.php on line 26

Warning: xtcommerce::require_once(.../shop/admin/includes/configure.php) [function.require-once]: failed to open stream: Operation not permitted in /var/www/vhosts/mydomain/httpdocs/classes/xtcommerce.class.php on line 26

Fatal error: xtcommerce::require_once() [function.require]: Failed opening required '.../shop/admin/includes/configure.php' (include_path='.:') in .../mydomain/httpdocs/classes/xtcommerce.class.php on line 26


So, das das irgendwas an den Pfaden nicht stimmt, sehe ich auch.
In der Klasse wird an eine übergebene Variable und einem Pfad ein require_once gemacht:
require_once($shoppath . "/admin/foo/configure.php");

Wie kann ich dieses Problem jetzt lösen?
Steh da gerade etwas auf dem Schlauch. :/

phlox



Geschrieben von LX am 28.04.2009 um 00:23:

Achtung

Kann es sein, dass $shoppath einfach mit einem Punkt zuviel beginnt? Wo diese Variable gesetzt wird, musst du aber selber rausfinden Augenzwinkern



Geschrieben von phlox81 am 28.04.2009 um 00:30:

 

Zitat:
Original von LX
Kann es sein, dass $shoppath einfach mit einem Punkt zuviel beginnt? Wo diese Variable gesetzt wird, musst du aber selber rausfinden Augenzwinkern


Ja, also das könnte sein. Ich hab da keine große Ahnung, ich weiss wo es auftritt, aber wie das aufgerufen wird, ka. Wahrscheinlich in irgendeiner Ajaxfunktion.
Auch gibt es auf dem htdocs ordner (also dem Webroot) das Verzeichnis nicht.
Auch sonst kann ich das nicht finden.



Geschrieben von phlox81 am 29.04.2009 um 13:37:

 

Also ich hab das mittlerweile eingrenzen können.

Es gibt:
domain.de
und eine subdomain
kunden.domain.de

Bei der Subdomain tritt der Fehler auf, da der Shop/die PHP Dateien auf domain.de liegen.
Das ist zwar auf dem selben Server vermute ich, aber halt doch nicht im Pfadbereich der Anwendung.

Wie kann ich das jetzt beheben?

phlox



Geschrieben von Misel am 29.04.2009 um 16:42:

 

naja, du musst den Pfad rausfinden unter dem die Domain.de-Daten liegen und entsprechend anpassen %)

am besten erstellst Du eine Datei mit folgendem Inhalt:

php:
1:
2:
3:
<?php
    print getcwd() . "\n";
?>


und packst die in beide Domains. Dann hast Du jeweils den vollen Dateipfad und kannst ihn dann korrigieren.



Geschrieben von phlox81 am 18.05.2009 um 11:12:

 

Wenn ich das richtig interpretiere liegt der shop unter:
/var/www/web1/web/shop/
Und wird von einem Unterverzeichnis aus
/var/www/vhosts/subdomain.domain.com/httpdocs/
aufgerufen.

Wie müsste ich das jetzt korrekt umbiegen? ../ wird ja wohl nicht erlaubt sein.

phlox



Geschrieben von Zyrus am 18.05.2009 um 16:04:

 

Vielleicht könntest du es mit dieser Zeile versuchen

code:
1:
set_include_path(get_include_path() . PATH_SEPARATOR . 'absoluterpfad');


oder mit mod_rewrite()

oder ich hab (mal wieder) was falsch verstanden großes Grinsen

Hoffe es hilft dir smile

Greetz

Zyrus



Geschrieben von phlox81 am 18.05.2009 um 18:30:

 

Ja, die Pfade zu bearbeiten hab ich mir auch schon überlegt, aber ob ich da jetzt das so einfach tun will, hm, ich zögere da was.
Ist set_include_path dauerhaft? Oder müsste ich das bei jedem skriptaufruf erneut setzen?

phlox



Geschrieben von rami am 18.05.2009 um 18:40:

 

Zitat:
Original von phlox81
Ja, die Pfade zu bearbeiten hab ich mir auch schon überlegt, aber ob ich da jetzt das so einfach tun will, hm, ich zögere da was.
Ist set_include_path dauerhaft? Oder müsste ich das bei jedem skriptaufruf erneut setzen?

phlox
Wirkt nur temporär. http://de3.php.net/manual/de/function.set-include-path.php



Geschrieben von phlox81 am 18.05.2009 um 19:21:

 

Hilft leider nicht, der Pfad wird immer noch nicht aktzeptiert.
Auch ein ändern von require_once auf include bringt nichts.

code:
code:
1:
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/web12/web/shop/admin/includes')


Sonst Ideen?

phlox



Geschrieben von Zyrus am 18.05.2009 um 19:48:

 

Mmh, mit mod_write() auch nicht ?

btw. Deine Fehlermeldung im 1. Post deutet doch sehr darauf hin das du per Script keinen Zugriff bekommst.. oder irre ich mich da ?

Vllt. mal die Benutzernamen, etc. anpassen ?!

Greetz

Zyrus



Geschrieben von phlox81 am 18.05.2009 um 23:31:

 

Zitat:
Original von Zyrus
Mmh, mit mod_write() auch nicht ?

btw. Deine Fehlermeldung im 1. Post deutet doch sehr darauf hin das du per Script keinen Zugriff bekommst.. oder irre ich mich da ?

Vllt. mal die Benutzernamen, etc. anpassen ?!



Hm, so richtig sicher bin ich bei einigen Dingen auch nicht. Ich tu da gerade mehr im Trüben rumstochern, weil ich halt nur der Betreuer sein soll, aber der Kunde bisher da nicht viel an Infos gegeben hat zu.

Ich denke das ich evtl. das Skript noch mal genau analysieren werde, denn ich hab den Verdacht, das es reicht, einfach den Shop lokal unter der Subdomain zu installieren. Genutzt wird es scheinbar nur um die DB auszulesen, und im bzw. export in xtcommerce zu realisieren.
So zumindest mein Eindruck.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH