Suchen
Inside Wiki
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > phpforum.de Wiki > phpforum.de Wiki

PHP Wiki Dieses Wiki sammelt Lösungen, zu Problemen, welche immer wieder im Forum auftauchen.

 
 
Artikel-Optionen Ansicht
  #1  

Standard Pfade

Pfade sind oftmals ein kompliziertes Thema, aber wenn man es ersteinmal verstanden hat, dann ist es ganz einfach. Grundsätzlich muss man zwischen zwei verschiedenen Dingen unterscheiden: Pfade die sich auf das "lokale" Dateisystem, also auf die Festplatte des Servers beziehen und Pfade, die sich auf die URL beziehen. Pfade, die sich auf die URL beziehen, werden erst von Webserver auf das Dateisystem geroutet. Dies kann direkt geschehen oder mittels mod_rewrite.
 

Inhalte

Pfade im Dateisystem


Das Pfade im Dateisystem benötigt man immer dann, wenn etwas mit PHP included wird oder Dateien von PHP auf dem Server aufgerufen wird. Um Ordner und Dateien voneinander zu trennen, gibt es auf verschiedenen Systemen, verschiedene Zeichen. Unter Windows ist das der Backslash(\), unter Linux der Forwardslash(/). Um sich komplizierte Abfragen mit PHP zu ersparen und das Script trotzdem möglichst portabel zu halten, gibt es die Konstante DIRECTORY_SEPARATOR, die je nach OS das entsprechende Ordnertrennzeichen enthält.

Absolute Pfade


Absolute Pfade sind Pfade, die unter Linux mit einem "/" beginnen und unter Windows mit "C:\". Sie geben die Position eines Ordners oder einer Datei absolut an, d.h. beginnend mit dem Wurzelverzeichnis. Um in PHP den absoluten Pfad zum aktuellen Verzeichnis zu bekommen(das Verzeichnis, in dem das ausführende Script liegt), kann man dirname(__FILE__) verwenden..
Die Funktion könnte etwas wie
Code:
C:\webserver_documentroot\benutzer\htdocs

ausgeben.

Relative Pfade


Relative Pfade beginnen auf allen Betriebssystemen mit einem "./" oder einem "../" . "./" steht für das aktuelle Verzeichnis. Wenn ich also im aktuellen Verzeichnis ein Script includen will, dann kann man schreiben
PHP Quellcode:
include('./header.php');

Liegt die Datei ein oder mehrere Verzeichnisse über dem aktuellen Verzeichnis, schreibt man "../".
PHP Quellcode:
//Annahme: Das aktuelle Verzeichnis ist C:\Users\Max
//Dort liegt das PHP Script

include('../header.php'); //C:\Users\header.php wird includiert
include('../../header.php'); //C:\header.php wird includiert
include('../Musterman/header.php'); //C:\Users\Mustermann\header.php wird includiert

include_path


Der include_path ist eine besondere Funktion von PHP. Es ist eine Konfigurationseinstellung in der php.ini. Man kann sie direkt in der php.ini, per .htaccess oder mittels
DOKU-VORLESE-SERVICE(TM)
string ini_set(string varname, string newvalue)
Sets the value of a configuration option
oder
DOKU-VORLESE-SERVICE(TM)
string set_include_path(string new_include_path)
Sets the include_path configuration option
verändern. Ausgeben kann man sie mit
DOKU-VORLESE-SERVICE(TM)
string ini_get(string varname)
Gets the value of a configuration option
oder
DOKU-VORLESE-SERVICE(TM)
string get_include_path()
Gets the current include_path configuration option

Der include_path kann mehrere absolute und relative Pfade beinhalten, die durch die Konstante PATH_SEPATATOR getrennt sein müssen. Includiert man z.B. eine Datei, die weder mit "C:\" oder "/" oder "./" oder "../" beginnt, so sucht PHP diese im include_path. Standardmäßig enthält der include_path das aktuelle Verzeichnis (./).
PHP Quellcode:
//Ich werde im include_path gesucht
include('header.php');

Man fügt häufig eigene Pfade zum include_path hinzu, z.B. um Bibliotheken wie das Zend Framework, die oft in anderen Verzeichnissen an einer zentralen Stelle liegen einfach zu includieren, ohne jedes mal einen absoluten Pfad angeben zu müssen.

Pfade in der URL


Pfade, die sich relativ zur URL beziehen, bekommt der Client, also der Browser zu Gesicht. Von der Dateistruktur auf dem Server bekommt dieser nichts mit. Die Pfade in der URL(z.B. http://www.example.com/ordner1/odner2/datei.php) werden erst vom Webserver übersetzt. Meistens wird dabei der Teil "http://www.example.com" vom Webserver ersetzt und auf das lokale Dateisystem geroutet. Z.B. zu C:\webProjects\example.com\htdocs. Die Ordner werden dann an den Pfad angehängt(C:\webProjects\example.com\htdocs\ordne r1\ordner2\datei.php). Doch das kann auch komplett anders ablaufen, falls mod_rewrite eingesetzt wird, dass den Routingprozess verändern kann.
Eine häufige Problemstellung ist, dass man aus Pfaden, die sich auf das lokale Dateisystem beziehen, Pfade machen will, die sich auf die URL beziehen.
Beispiel:
Fotos für ein dynamisches und möglichst portables Fotoalbum liegen im Verzeichnis C:\webProjects\example.com\fotos. Die URL dazu soll so aussehen: http://www.examplde.com/fotos. Das ausführende Script ist C:\webProjects\example.com\index.php.

Relevante Funktionen und Variablen


PHP stellt dazu eine Reihe von Variablen und Funktionen bereit, die das arbeiten mit Pfaden stark vereinfachen.
$_SERVER['DOCUMENT_ROOT']Enthält den absoluten Pfad auf dem lokalem Dateisystem zum Rootverzeichnis des Webservers (meist "htdocs")C:\webProjects\example.com
$_SERVER['HTTP_HOST']Enthält den Namen der Domainhttp://www.example.com
getcwd()Liefert das aktuelle Arbeitsverzeichnis. Normalerweise das Rootverzeichnis des Webservers(htdocs). Kann mit chdir() geändert werden.C:\webProjects\example.com
PATH_SEPARATOREnthält das Trennzeichen für Pfade;
DIRECTORY_SEPARATOREnthält das Trennzeichen für Verzeichnisse\
$_SERVER['SCRIPT_FILENAME']Enthält den absoluten Pfad zum ausführenden ScriptC:\webProjects\example.com\index.php
$_SERVER['SCRIPT_NAME']Enthält den Namen des Scriptsindex.php
$_SERVER['PHP_SELF']Sollte nichtmehr verwendet werden, weil anfällig für XSS Attacken. SCRIPT_NAME verwendenindex.php
__FILE__Enthält den absoluten Pfad zum ausführenden Script.C:\webProjects\example.com\index.php

Links



Mitwirkende: combie, Sebbl
Erstellt von Sebbl, 09.04.2008 am 16:00
Zuletzt bearbeitet von combie, 19.11.2009 am 11:48
3 Kommentare , 5288 Betrachtungen

Dieser Text steht unter der GNU-Lizenz für freie Dokumentation


 

Lesezeichen

Artikel-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP und Pfade Chris1977 PHP 1 23.04.2007 20:53
pfade Simon1991 PHP 20 13.11.2006 20:30
Includes und Pfade Maxus PHP 3 27.09.2006 15:59
pfade vergleichen? Eppi PHP 3 07.10.2004 20:39
pfade in php bei include Frashier PHP 5 04.11.2003 00:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:01 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC