2013-02-15 4 views
9

in PHP geschrieben, wenn ich eine Datei, die erfordert eine Datei aus einem Unterverzeichnis wie:In php, benötigen in der erforderlichen Datei?

require('directory/file.php'); 

und file.php will eine andere Datei in einem eigenen Verzeichnis verlangen, ist der Weg relativ zu file.php oder die Datei, die es enthalten?

Antwort

1
include(dirname(__FILE__).'/include.php'); 

REF: http://php.net/manual/en/language.constants.predefined.php

Der vollständige Pfad und Dateinamen der Datei. Wenn es in einem Include verwendet wird, wird der Name der enthaltenen Datei zurückgegeben. Seit PHP 4.0.2 enthält FILE immer einen absoluten Pfad mit aufgelösten Symlinks, während es in älteren Versionen unter Umständen relativen Pfad enthielt.

+2

in php 5.3 und höher, können Sie '__DIR__' anstelle von' dirname (__ FILE __) 'verwenden. (man sollte mindestens 5.3 verwenden, da ältere Versionen nicht unterstützt werden) – SDC

4

Es ist relativ zu den ursprünglichen erforderlichen Datei, wenn das Sinn macht.

Also, wenn Sie eine Datei mit dem Namen Index, der wie folgt aussieht:

require("./resources/functions.inc.php"); 

Und dann würde functions.inc.php müssen wie folgt aussehen:

require("./resources/anotherFunctionsFile.inc.php"); 

Statt:

require("anotherFunctionsFile.inc.php); 

Aber wirklich sollten Sie die Konstante __DIR__ verwenden, die immer das Verzeichnis ist, aus dem das Skript ausgeführt wird; es macht die Dinge viel einfacher.

Mehr Informationen über __DIR__ und andere Konstanten: http://php.net/manual/en/language.constants.predefined.php

Ich hoffe, das hilft.

2

Es ist relativ zum Hauptskript, in diesem Fall A.php. Denken Sie daran, dass require() nur Code in das aktuell laufende Skript einfügt.

Das heißt, es unabhängig davon, welche die require() Datei von

Nr

genannt Wenn Sie es wichtig machen wollen, und tun, um eine require() relativ zu B.php, Verwendung die __FILE__ konstante (oder __DIR__ seit PHP 5.3), die immer auf die wörtliche aktuelle Datei zeigen wird, dass diese Zeile, wenn Code in befindet.

include(dirname(__FILE__)."/C.PHP"); 
+0

'__DIR__' ist seit 5.3, nicht 5.2 – SDC

+0

@SDC ok korrigiert. – Minesh

Verwandte Themen