2013-02-15 14 views
9

w PHP, jeśli mam plik, który wymaga plik z podkatalogu jak:W php, wymagają w wymaganym pliku?

require('directory/file.php'); 

i file.php chce wymagać innego pliku w swoim katalogu, to ścieżka względna do file.php lub plik, który jest zawarte w?

Odpowiedz

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

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

Pełna ścieżka i nazwa pliku. Jeśli zostanie użyty wewnątrz elementu include, zwracana jest nazwa dołączonego pliku. Od wersji PHP 4.0.2, plik zawsze zawiera ścieżkę bezwzględną z rozwiązanymi linkami dowiązanymi, podczas gdy w starszych wersjach zawiera ścieżkę względną w pewnych okolicznościach.

+2

w php 5.3 i wyżej, możesz użyć '__DIR__' zamiast' dirname (__ FILE __) '. (powinno się używać co najmniej 5.3, ponieważ starsze wersje nie są obsługiwane) – SDC

4

Jest to względne w stosunku do oryginału wymagającego pliku, jeśli ma to sens.

Tak więc, jeśli masz plik o nazwie indeks, który wygląda tak:

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

A potem functions.inc.php musiałby wyglądać tak:

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

Zamiast:

require("anotherFunctionsFile.inc.php); 

Ale naprawdę powinieneś używać stałej __DIR__, która jest zawsze katalogiem, z którego uruchamiany jest skrypt; to znacznie ułatwia sprawę.

Więcej informacji o __DIR__ i inne stałe: http://php.net/manual/en/language.constants.predefined.php

Mam nadzieję, że pomaga.

2

Jest to względne w stosunku do głównego skryptu, w tym przypadku A.php. Pamiętaj, że require() po prostu wstawia kod do aktualnie uruchomionego skryptu.

Oznacza to, że to ma znaczenie który plik programu require() jest wywoływana z

nr

Jeśli chcesz, aby to ważne, a nie an require() względem B.php, korzystanie __FILE__ stała (lub __DIR__ od PHP 5.3), które zawsze będą wskazywać na dosłownym pliku aktualnego że jeśli linia kodu znajduje się w.

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

'__DIR__' jest od 5.3, a nie 5.2 – SDC

+0

@SDC ok to poprawił. – Minesh