2013-02-15 18 views
9

in PHP, se ho un file che richiede un file da una directory come:In php, richiede nel file richiesto?

require('directory/file.php'); 

e file.php vuole richiedere un altro file nella propria directory, è il percorso relativo alla file.php o il file che si tratta di incluso in?

risposta

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

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

Il percorso completo e il nome del file. Se utilizzato all'interno di un include, viene restituito il nome del file incluso. A partire da PHP 4.0.2, FILE contiene sempre un percorso assoluto con collegamenti simbolici, mentre nelle versioni precedenti conteneva il percorso relativo in alcune circostanze.

+2

in php 5.3 e versioni successive, puoi usare '__DIR__' invece di' dirname (__ FILE __) '. (si dovrebbe usare almeno 5.3, poiché le versioni precedenti non sono supportate) – SDC

4

È relativo al file di richiesta originale se questo ha senso.

Quindi, se avete un file chiamato indice che assomiglia a questo:

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

E poi functions.inc.php avrebbe bisogno di simile a questa:

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

Piuttosto che:

require("anotherFunctionsFile.inc.php); 

Ma in realtà si dovrebbe fare uso della costante __DIR__, che è sempre la directory da cui viene eseguito lo script; rende le cose molto più facili.

Maggiori informazioni su __DIR__ e altre costanti: http://php.net/manual/en/language.constants.predefined.php

Mi auguro che aiuta.

2

È relativo allo script principale, in questo caso A.php. Ricorda che require() inserisce semplicemente il codice nello script attualmente in esecuzione.

Cioè, cosa importa che il file il require() viene chiamato da

No.

Se si vuole fare importa, e fare un require() rispetto al b.php, l'uso la __FILE__ costante (o __DIR__ da PHP 5.3) che sarà sempre puntare al file corrente letterale che quella riga se il codice si trova.

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

'__DIR__' è dal 5.3, non 5.2 – SDC

+0

@SDC ok corretto. – Minesh

Problemi correlati