La risposta accettata di Pekka è incompleta e, in un contesto generale, fuorviante. Se il file viene fornito come percorso relativo, il costrutto del linguaggio chiamato lo include
cercherà nel modo seguente.
Innanzitutto, passerà attraverso i percorsi della variabile d'ambiente include_path
, che può essere impostata con ini_set
. Se fallisce, cercherà nella directory dello script chiamante dirname(__FILE__)
( __DIR__
con php> = 5.3.) Se anche questo fallisce, solo allora cercherà nella directory di lavoro! Si scopre solo che, per impostazione predefinita, la variabile di ambiente include_path
inizia con .
, che è la directory di lavoro corrente. Questo è l'unico motivo per cui cerca prima nella directory di lavoro corrente. Vedi http://php.net/manual/en/function.include.php .
I file vengono inclusi in base al percorso file fornito o, se non ne viene fornito nessuno, include_path specificato. Se il file non viene trovato in include_path, include infine il controllo nella directory dello script chiamante e nella directory di lavoro corrente prima di fallire.
Quindi, la risposta corretta alla prima parte della domanda è che è importante dove si trova lo script di chiamata incluso. La risposta all'ultima parte della domanda è che la directory di lavoro iniziale , in un contesto di web server, è la directory dello script chiamato, lo script che include tutti gli altri pur essendo gestito da PHP. In un contesto da riga di comando, la directory di lavoro iniziale è qualunque sia quando viene richiamato php al prompt, non necessariamente la directory in cui si trova lo script chiamato. La directory di lavoro corrente , tuttavia, può essere modificata in fase di esecuzione con la funzione PHP chdir
. Vedi http://php.net/manual/en/function.chdir.php .
Questo paragrafo viene aggiunto per commentare altre risposte. Alcuni hanno affermato che fare affidamento su include_path
è meno robusto e quindi è preferibile utilizzare percorsi completi come ./path
o __DIR__ . /path
. Alcuni sono arrivati a dire che fare affidamento sulla directory di lavoro .
stessa non è sicuro, perché può essere modificato. Tuttavia, alcune volte, è necessario fare affidamento sui valori dell'ambiente. Ad esempio, potresti voler impostare include_path
vuoto, in modo che la directory dello script chiamante sia il primo posto in cui cercherà, anche prima della directory di lavoro corrente. Il codice potrebbe essere già scritto e aggiornato regolarmente da fonti esterne e non si desidera reinserire il prefisso __DIR__
ogni volta che il codice viene aggiornato.