php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2008, 23:13  
Neuer Benutzer
 
Registriert seit: 14.12.2005
Beiträge: 9
iBurner
Standard Relative Pfadangaben in includierten Dateien

Guten Abend!

Ich hatte letztens die Idee, dass ich meine etwas komplexeren MySQL Querrys in Dateien Auslagere, die ich in ein Verzeichnis auf dem Server ablege (eine Art Bibliothek) und diese zur Laufzeit einlese und ggf. verändere.

Nun habe ich aber Klassen, die auf dieses Repertoire zugreifen müssen, die ich per include auf "höher gelegenen" Seiten Einbinde. Der Effekt: meine relativen Pfadangaben stimmen natürlich nicht mehr.

Absolute Angaben würde ich gerne vermeiden, da die Root Verzeichnisse auf den Servern, auf denen ich die Klassen einsetzten möchte, immer unterschiedlich sind.

Wie könnte ich es anstellen, dass die relativen Pfadangaben auch nach dem Include noch stimmen?

Ein Ansatz wäre, dass ich die Klasse herausbekommen lasse, wo sie auf dem Server wirklich liegt (nicht wo sie ausgeführt wird) und mir von da dann den Pfad zusammen bastel. Nur wie bekommt es die Klasse ohne ein manuelles Anpassen raus?

Ich hab mir auch überlegt, ob es nicht möglich ist den Kontext des Objektes so zu verändern, dass der Kontext nicht die Datei ist, in der ich das Objekt erzeuge, sondern die Datei, in der die Klasse drin steht.

Ich bin euch für praktische und theoretische Lösungsansätze sehr dankbar!
iBurner ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.08.2008, 01:22  
Erfahrener Benutzer
 
Registriert seit: 11.01.2005
Beiträge: 106
MerlinderZauberer ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo iBurner,

Du setzt am Anfang Deines aufgerufenen Dokument ein Variabel mit einer relativen Pfadangabe auf Dein Rootverzeichnis.

------------------------------

Hier mal ein Beispiel z.B. bei folgender Struktur:
rootVerzeichnis --> verzeichnis1 --> Verzeichnis2 --> Verzeichnis3


Nun setzt Du eine Variabel mit folgenden Wert:
$rel_path = "../../../";
Diese Variabel verweist damit auf Dein Rootverzeichnis.


Includierst Du nun eine Datei, benutzt Du dafür beispielhaft folgende Variante:
include ($rel_path . 'Verzeichnisx/Datei.php');

In allen includierten Dateien kannst ebenfalls nach vorgenannten Schema weitere Dateien includieren.

Merlin der Zauberer
__________________
www.Sternenwelt.net - Astronomie im Internet -
www.SternenweltForum.net - Antworten rund um die Astronomie -
MerlinderZauberer ist offline   Mit Zitat antworten
Alt 09.08.2008, 01:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Nö Merlin, so klappt das nicht. Natürlich ist der relative Pfad je nach include auch zu verschiedenen Verzeichnissen (immer dem des per Request aufgrufenen Scripts) relativ. Im Übrigen heißt das Substantiv: die Variable.

Es gibt mehrere Ansätze
1/ absolute Pfade.
2/ Einbinden aller Scripte aus einer Verezichnistiefe. Wenn diese dann weitere Scripte einbinden, den Pfad weiter relativ zum Wurzelpfad angeben.
3/ Ermitteln des aktuellen Verzeichnisses über __FILE__ und ableiten eines relativen Pfades.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 09.08.2008, 03:35  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Oder den Includepath setzen und sich den ganzen Ärger ersparen.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 09.08.2008, 16:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Du Probleme mit include bei relativen Pfaden hast, lass Dir das cwd ausgeben.
Dazu sind nämlich relative Pfadangaben ...relativ
getcwd
David ist offline   Mit Zitat antworten
Alt 10.08.2008, 15:50  
Neuer Benutzer
 
Registriert seit: 14.12.2005
Beiträge: 9
iBurner
Standard

Herrlich, ihr habt mich auf die richtige Idee gebracht!

Bevor ich eine Datei lade, setzte ich den PHP Workpath auf das Verzeichnis, in dem die Klasse liegt, die die Datei einlesen soll.
PHP-Code:
chdir(dirname(__FILE__)); 
Und schon sind die Pfadangaben innerhalb der eingebundenen Datei gültig.

Danke!

Falls jemand eine ästhetischere Lösung hat, ich bin offen!
iBurner ist offline   Mit Zitat antworten
Alt 10.08.2008, 16:44  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich hab auch gleichartig Scripte auf unterschiedlichen Domains laufen. Die mysql_connect-Anweisungn habe ich in einem Ordner außerhalb des Webs, und der ist bei allen Domains unterschiedlich.

domainname1/home/www/ (scripte für Domain1)
domainname1/home/include/ (includes für Domain1)

domainname2/home/www/subdir/ (scripte für Domain2)
domainname2/home/include/ (includes für Domain2)

Ich habe mir dazu eine Datei pfad.php ausgedacht, in der so was drinsteht:

PHP-Code:
<?php
$includeDir 
'/domainname1/home/include/';
?>
In meinem Script include ich dann so:

PHP-Code:
<?php
include 'pfad.php';
include(
$includeDir 'connect.php');
?>
Von Domain zu Domain muss man nur die Datei pfad.php anpassen, da auf meinem Server der Domainname Teil des Pfades ist.
Wolla ist offline   Mit Zitat antworten
Alt 11.08.2008, 17:27  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das Arbeitsverzeichnis würde ich nicht ohne Not ändern.
Zumal
PHP-Code:
include dirname(__FILE__) . 'relativer/Pfad'
hier das Gleiche leistet.
David ist offline   Mit Zitat antworten
Alt 11.08.2008, 17:36  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von David Beitrag anzeigen
Das Arbeitsverzeichnis würde ich nicht ohne Not ändern.
Zumal
PHP-Code:
include dirname(__FILE__) . 'relativer/Pfad'
hier das Gleiche leistet.
PHP-Code:
require_once realpath(dirname(__FILE__)) . "/<RELATIVER_PFAD>"
finde ich persöhnlich etwas schöner ...zumindest wenn man das ganze in ner Factory nutzen will da realpath den Pfad gleich Formatiert d.h. den abschliesenden Slash entfernt sofern einer da ist oder false zurück gibt.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Alt 11.08.2008, 17:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

...und statt / noch DIRECTORY_SEPARATOR verwenden.

Geändert von Quadaptor (11.08.2008 um 17:57 Uhr).
Quadaptor ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
nur bestimmte Dateien aus einem Verzeichnis auslesen Madden PHP Tipps 2006 2 07.03.2006 17:10
Image Pfadangaben PHP Tipps 2006 3 15.01.2006 13:39
Download von Dateien inu PHP Tipps 2006 1 12.01.2006 16:04
Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
Dateien löschen (mit "unlink") PHP Tipps 2005-2 8 09.06.2005 22:55
[Erledigt] Nur bestimmte Dateien anzeigen, wie mache ich das HILFE PHP Tipps 2005 4 02.04.2005 22:38
Dateien aus Ordner andersherum auslesen nsane PHP Tipps 2004-2 1 08.12.2004 17:29
dateien zugänglich machen PHP Tipps 2004 8 22.10.2004 14:25
[Erledigt] Dateien von Client zu einem Webserver hochladen PHP Tipps 2004 7 12.10.2004 11:33
Mit PHP erzeugte Dateien besitzen die falschen Rechte PHP Tipps 2004 3 14.09.2004 12:54
[Erledigt] PHP Dateien auf Server einsehen - Verschlüsseln PHP Tipps 2004 6 12.09.2004 10:17
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07
[Erledigt] Dateien können nicht erzeugt werden PHP-Fortgeschrittene 10 03.06.2004 16:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php pfadangaben, php relativer pfad, php pfadangabe, php relative pfade, php pfad angeben, pfadangaben php, relativer pfad php, pfadangabe php, php relative pfadangabe, relative pfade php, php relative pfadangaben, php dateipfad angeben, relative pfadangabe php, pfadangaben in php, relatives verzeichnis, relative pfadangaben php, pfadangabe in php, php pfade angeben, php pfad angaben, php include js script relativ einbinden

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum