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 includecercherà 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_pathinizia 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 ./patho __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_pathvuoto, 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.