Richtige Pfadangabe
am 27.08.2006 10:41:40 von Wolfgang Herfter
Hallo zusammen,
ich habe hier eine Menge Scripte vorliegen, den ich anpassen darf.
Das Problem ist das Datein z.B. includiert werden und die Pfadangaben so
auf dem neuen Rechner nicht funktionieren.
Beispiel
if(file_exists('administrator/....) funktioniert auf ein paar Maschinen.
Hier funktioniert das nur so if(file_exists('./administrator/....). Ich
kann mich dunkel errinern, dass es Einstellungen gibt (PHP oder Apache)
die den Aufruf ohne vorangestelltem "./" ermöglichen.
Ist dem so?
Denn sonst kann ich mich durch Unmengen von Scripte wühlen.
Vielen Dank für euere Hilfe im Voraus.
cu
wolfgang
Re: Richtige Pfadangabe
am 27.08.2006 11:50:53 von Ulf Kadner
Wolfgang Herfter wrote:
> ich habe hier eine Menge Scripte vorliegen, den ich anpassen darf.
> Das Problem ist das Datein z.B. includiert werden und die Pfadangaben so
> auf dem neuen Rechner nicht funktionieren.
> Beispiel
> if(file_exists('administrator/....) funktioniert auf ein paar Maschinen.
Ist ja auch keine gute relative Pfade dazu zu nutzen. Sowas macht man
eigentlich mit dynamisch zusammengesetzten absoluten Pfaden, oder man
sieht zu, das die Datei so im include-Pfad erreichbar ist.
Es gibt zwar immer wieder Leute die gern mal mit relativen Pfaden
arbeiten, aber meist ist es nicht sinnvoll.
Beispiel:
dirname(__FILE__).DIRECTORY_SEPARATOR.'administrator'
> Hier funktioniert das nur so if(file_exists('./administrator/....). Ich
> kann mich dunkel errinern, dass es Einstellungen gibt (PHP oder Apache)
> die den Aufruf ohne vorangestelltem "./" ermöglichen.
Das hat nicht mit Apache zu tun wenn Du auf das Dateisystem zugreifst.
PHP hat auch keine Konfig-var die das entscheident beinflußt.
> Denn sonst kann ich mich durch Unmengen von Scripte wühlen.
Ist doch kein Problem. Es gibt zahlreiche Editoren die
dateiübergreifendes Ersetzen beherrschen. Mit Regexen ist das meist in
nen paar Minuten erledigt.
MfG, Ulf
Re: Richtige Pfadangabe
am 27.08.2006 12:03:47 von Carsten Wiedmann
Wolfgang Herfter schrieb:
> Beispiel
> if(file_exists('administrator/....) funktioniert auf ein paar Maschinen.
>
> Hier funktioniert das nur so if(file_exists('./administrator/....). Ich
> kann mich dunkel errinern, dass es Einstellungen gibt (PHP oder Apache)
> die den Aufruf ohne vorangestelltem "./" ermöglichen.
In der in der "php.ini" (oder ini_set()) fehlt dem include_path der Punkt an
erster Stelle. Sollt so aussehen (*nix):
| include_path = .:/path/to/pear
Gruß
Carsten
Re: Richtige Pfadangabe
am 27.08.2006 12:05:02 von Wolfgang Herfter
> Ist ja auch keine gute relative Pfade dazu zu nutzen. Sowas macht man
> eigentlich mit dynamisch zusammengesetzten absoluten Pfaden, oder man
Sehe ich auch so.
>
> Ist doch kein Problem. Es gibt zahlreiche Editoren die
> dateiübergreifendes Ersetzen beherrschen. Mit Regexen ist das meist in
> nen paar Minuten erledigt.
Stimmt. Aber es handelt sich hier um ein CMS (Joombla) und der User wird
immer wieder neue Komponenten einladen. Und in die schreiben halt so wie
oben beschrieben. So kann ich das Teil dann ständig nachpflegen.
Vor allem wurmt mich das die ganze Umgebung auf einer Maschine schon lief.
Die hatten da keien Probleme mit den Pfaden.
>
> MfG, Ulf
cu
wolfgang
Re: Richtige Pfadangabe
am 27.08.2006 12:32:08 von Wolfgang Herfter
Merci it works.
Das wars.
Vielen Dank und einen schönen Sonntag.
wolfgang
Am Sun, 27 Aug 2006 12:03:47 +0200 schrieb Carsten Wiedmann:
> Wolfgang Herfter schrieb:
>
>> Beispiel
>> if(file_exists('administrator/....) funktioniert auf ein paar Maschinen.
>>
>> Hier funktioniert das nur so if(file_exists('./administrator/....). Ich
>> kann mich dunkel errinern, dass es Einstellungen gibt (PHP oder Apache)
>> die den Aufruf ohne vorangestelltem "./" ermöglichen.
>
> In der in der "php.ini" (oder ini_set()) fehlt dem include_path der Punkt an
> erster Stelle. Sollt so aussehen (*nix):
> | include_path = .:/path/to/pear
>
> Gruß
> Carsten
Re: Richtige Pfadangabe
am 27.08.2006 13:19:31 von Rainer Hinz
Ulf Kadner wrote:
> Beispiel:
> dirname(__FILE__).DIRECTORY_SEPARATOR.'administrator'
Die Idee ist nicht schlecht. Ich arbeite immer mit einer sog. PREPATH=20
Konstanten. Dort stehen genau so viel '../..' usw. drinne, bis ich ins=20
Wurzelverzeichnis komme und von dort aus, wird die Datei mit kompletten=20
Pfad angesprungen. Der Vorteil ist, neben der Tatsache, dass ich da ein=20
Projekt mit ca. 500 Php Dateien habe und somit schneller den Teufel=20
finden kann, der, dass ich auch über Unterverzeichnisse ins Projekt=20
kommen kann, Beispiel der Administrator über
/admin/index.php (setzt PREPATH auf '..' inkludiert=20
PREPATH.DIRSEP.index.php)
index.php ist dann die Hauptdatei, die alles regelt (und wenn PREPATH=20
nicht gesetzt ist, setzt es sie auf '.' .
Das mit dem Admin ist im Prinzip trivial, aber ich arbeite zur Zeit auf=20
einem Projekt, wo diverse Schnittstellen für Systempartner vorhanden=20
sind. Die haben einfach ein /schnittstellen/partner{1-10}/index.php
die genau das gleich machen, wie bei Admin, nur der PREPATH lautet halt=20
'../..'.
Ganz wichtig ist dann noch der IMGPREPATH, der genau den relativen Pfad=20
für die Bilder sucht. Gerade bei Ajax Anwendungen absolut notwendig,=20
aber auch wiederum bei o.g. Partnern, die die Webseite folgendermaßen=20
inkludieren
www.partnerwebseite/meinprojekt/index.php
Ohne das IMGPREPATH auf ein http://meinserver.de/ zu setzen, würde kein=
=20
Link mehr angezeigt werden.
Nur mal so am Rande erwähnt...
Gruß
Anni
Re: Richtige Pfadangabe
am 02.09.2006 20:04:09 von Christoph Jeschke
* Anni Schmidt:
> Die Idee ist nicht schlecht. Ich arbeite immer mit einer sog. PREPATH
> Konstanten.
Kurze Frage:
Worin unterscheidet sich deine Lösung von der bereits im Environment
definierten $_SERVER['DOCUMENT_ROOT']-Variable? Abgesehen davon, dass
die DOCUMENT_ROOT-Angabe einen Pfad absolut angibt und deine
PREPATH-Angabe einen relativen Pfad, kann ich keinen Unterschied
entdecken. Oder irre ich mich?
GruÃ,
Christoph
Re: Richtige Pfadangabe
am 02.09.2006 22:07:37 von Rainer Hinz
Christoph Jeschke wrote:
> Kurze Frage:
> Worin unterscheidet sich deine Lösung von der bereits im Environme=
nt
> definierten $_SERVER['DOCUMENT_ROOT']-Variable?=20
> Abgesehen davon, dass
> die DOCUMENT_ROOT-Angabe einen Pfad absolut angibt und deine
> PREPATH-Angabe einen relativen Pfad, kann ich keinen Unterschied
> entdecken. Oder irre ich mich?
Ich meine es gibt da keinen erwähnenswerten Unterschied, ich meine=20
irgendwann mal ein Konstrukt gehabt zu haben, wo das dann nicht=20
funktionierte, aber das war nicht mein Projekt.
Im Prinzip habe ich das mal so erdacht (glaube in Perl) und gehört z=
ur=20
Kategorie: Fertiggestellt, bevor eine fertige Lösung gesucht wurde. =
Passiert mir bei Funktionen und Klassen relativ häufig. Kann man auc=
h=20
drüber streiten, aber dafür kann ich meinen Kram immer erweiter=
n.
GruÃ
ANni