PHP Der Unterschied zwischen Voll- und relativen Pfaden. Das Dateisystem ist ebenfalls vor Ort.


Ihre Website existiert, als ob in zwei Dimensionen.
Real und virtuell.

Für alle Besucher - ist ein virtueller Webserver. Die sich dadurch auszeichnet, unter anderem die Tatsache, dass es nicht über eine vorhandene Datei ist. wenn Sie schreiben <a href="http://site.ru/file.html" target="_blank">http://site.ru/file.html - es ist nicht eine Datei. Dieser URI, die virtuelle Adresse. Keine Datei auf dem Server namens file.html kann nicht sein. Es ist auf alle virtuellen Adressen, anstatt Dateien.
Und der Browser mit Adressen zu arbeiten.

Für Entwickler gleichen Standort - ein Programm, das auf einem ganz bestimmten realen Computer läuft. Mit einem markenspezifischen Festplatte, Verzeichnisse und Dateien. Und das Skript, die Arbeit mit Ihren Daten, andere Skripte laden, es mit echten Dateien auf der physikalischen Disc arbeiten.

Es ist in diesem Unterschied und liegen Schwierigkeiten oft von Newcomern.
Der Verlust von Dateien, Links mit Dateien zu verwechseln, beziehen sich auf lokale Dateien über HTTP oder inklyudyat Dateien aus dem Web-Server-Wurzel.

Alles in allem ist es notwendig, klar zwei Dinge zu verstehen:
1. zwischen der Wurzel des Web-Servers zu unterscheiden, wie durch den Browser zu sehen ist, und das Root-Dateisystem auf dem Datenträger.
2. Der relative Pfad von der absoluten Differenz.

Beginnen wir mit dem zweiten beginnen.
Es ist sehr einfach. Wenn der Pfad durch das System Wurzel angegeben ist, ist es ein absoluter Pfad. Es ist wie eine Postanschrift im wirklichen Leben - wo man nicht gehen würde, aber die genaue Adresse, die Sie immer genau den richtigen Platz zu finden.
Beispiele für absolute Pfade:
/var/www/site/forum/index.php
/img/frame.gif
с:\windows\command.com
/var/www/site/forum/index.php
/img/frame.gif
с:\windows\command.com
in Unix-basierten Systemen und Web - Sites Wurzel wird durch einen Schrägstrich bezeichnet - "/".
Es ist wichtig. Das ist nicht nur ein Zauberstab und einen separaten Adress Weg.
In einer Adresse http://www.site.ru/ letzten Schrägstrich - nicht für die Schönheit! Es bezieht sich auf eine ganz bestimmte Adresse - den Anfang der Seite.
Auf der Fahrt in Unix-Systemen, so können Sie "cd /" und Sie werden in das Stammverzeichnis gehen.
In vindous Systemen Dateisystem durch die Scheiben geteilt, so in der absoluten Adresse ist erforderlich, den Laufwerksbuchstaben angeben. Absolute Wurzel des gesamten Dateisystems vindous nicht, jeder Antrieb - sein eigenes. Zum Beispiel C: \ E: \
Daher kann, selbst wenn der Pfad zu vindous mit einem Schrägstrich beginnt, ist es nicht ein absoluter Pfad und relativ. Im Hinblick auf die aktuelle Disc. Ein perfekter Start mit einem Buchstaben.

Wenn am Anfang des Root-Pfad nicht angegeben wird, ist dieser Weg relativ, und es dostaivaetsya von der aktuellen Position. Im wirklichen Leben ist dies erinnert an den Weg zum Liquor Store - ". Zwei Blöcke nach links und rechts gibt es die ganze Zeit" Das Erreichen eines solchen Weg nur von einem bestimmten Punkt. Von der anderen wird geben Sie ist bereits in einem ganz anderen Ort.
Das einfachste Beispiel für einen relativen Pfad - es ist nur ein Dateiname.
Wenn die Datei im selben Verzeichnis befindet, auf die das Programm funktioniert - es wird ihn finden, den aktuellen Pfad zu dem Dateinamen hinzugefügt wird.
Beispiele für relative Pfade:
file.php (Fall ist im selben Ordner)
./file.php (Fall hat sich im selben Ordner. Diesen Datensatz manchmal in einigen Unix - Systemen erforderlich ist)
images/picture.jpg (die Datei ist in den Kapok Bilder, die in der aktuellen ist)
../file.php (die Datei in einem Ordner, der eine Ebene über dem Strom)
../../file.php (die Datei in einem Ordner, der auf zwei Ebenen über dem aktuellen befindet)

Und das Betriebssystem und Browser Sie einen relativen Pfad zur absoluten Finish stoßen Gebäude es. aber jeder - auf seine eigene Weise.

Wir wenden uns nun den ersten Punkt.
Der Unterschied der Wurzel, wie von einem Browser den Web-Server, und das Root-Dateisystem auf der Festplatte zu sehen.
In der Regel haben die bisherigen Ausführungen klar sein sollte.
Auf der Antriebspfad könnte, um das Skript sein:
/var/www/site/forum/index.php Zur gleichen Zeit wird die virtuelle Adresse des Skripts , wenn durch den Browser angezeigt wird:
http://www.site.ru/forum/index.php Dieses Beispiel ist leicht zu sehen , wo sich die beiden Messungen schneiden: Diese beiden Standorte haben einen gemeinsamen Teil - /forum/index.php - und es ist nur Ursachen Verwirrung.
Für den Browser ist der vollständige Pfad, der nur sein. Es beginnt mit dem Stamm der Site.
Für das gleiche Skript auf einem Server ausgeführt werden - es ist nur die Art und Weise Teil.
für den Skriptpfad /forum/index.php würde nicht existent sein - im Stammverzeichnis kein Forum!
den vollständigen Pfad für die Tatsache zu bekommen , dass die Website aussieht /forum/index.php , ist es notwendig , sie an den linken Pfad zu dem Ordner zu befestigen, die kornevaoy gesamte Web - Server betrachtet wird.
in unserem Beispiel - ist
/var/www/site , wird dieser Pfad in kofiguratsii Web - Server definiert , und dass es in der Systemvariablen, die PHP enthalten ist $_SERVER [ 'DOCUMENT_ROOT' ] $_SERVER [ 'DOCUMENT_ROOT' ]

Der virtuelle Server ist - besteht darin, dass der Benutzer sieht, - im Gegenteil, es keine Platte ist. Es gibt eine Stammwebsite. Das heißt, für jede Bezugnahme auf Arbeit garantiert, unabhängig von der Stelle eines Raumes es aufgerufen wird, muss es absolut sein.
Wenn Sie eine Website haben, hat zum Beispiel zwei Abschnitte:
http://www.site.ru/about/info.php
und
http://www.site.ru/job/vacancy.php
wenn die Datei dann, info.php zu verbinden , nur um vacancy.php , wird der Browser es nicht finden - es wird die Adresse nachschlagen http://www.site.ru/about/vacancy.php , Ergänzungen Pfad aus dem aktuellen Verzeichnis zu konstruieren.
Daher ist es notwendig , den vollständigen Pfad von der Wurzel der Site zu schreiben - /job/vacancy.php
All dies gilt natürlich nicht nur den Tag <a> und <img> und andere , die Verknüpfungen zu anderen Dateien verwendet.

Links zu lokalen Adressen sollten ohne Protokoll und Domain geschrieben werden - nur den Weg von der Site - Stamm - /job/vacancy.php . Links zu anderen Seiten müssen auch voll ausgeschrieben werden - http://www.site1.ru/job/vacancy.php .


PHP bietet eine Reihe von Tools für die Arbeit mit Dateien, Verzeichnisse und URL-s.

Zum einen ist es die vielen vordefinierten Variablen, die in der Dokumentation und Werte in Ihrem Skript pmozhno mit sah beschrieben phpinfo() :

__FILE__ Konstante enthält den Namen des aktuellen ausführbaren Datei.
Im Gegensatz zu PHP_SELF enthält es den Dateinamen derzeit ispolyayuschegosya.
sehr nützliche Design scheint dirname ( __FILE__ ) dirname ( __FILE__ ) Auf denen es wünschenswert ist, alle Dateien Herausforderungen, die im gleichen Verzeichnis wie das Skript zur Verfügung ersetzen liegen. Zum Beispiel:
require dirname ( __FILE__ ). "/init.php" Funktion dirname() , zusammen mit einem basename() ist eine der häufigsten mit Dateien und Verzeichnissen zu arbeiten.

von phpfaq.ru