__FILE__
to magic constant zawierający pełną ścieżkę do pliku, który wykonujesz. Jeśli znajdujesz się wewnątrz pliku włączającego, jego ścieżka będzie zawierać treść __FILE__
.
Więc z tej konfiguracji:
/folder/random/foo.php
<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n" ;
echo "-------\n";
include 'bar/bar.php';
/folder/random/bar/bar.php
<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n";
Otrzymujesz to wyjście:
/folder/random
/folder/random
-------
/folder/random
/folder/random/bar
Więc getcwd()
zwraca katalog, w którym rozpoczął wykonywanie, podczas gdy plik jest dirname(__FILE__)
zależne.
Na moim serwerze internetowym getcwd()
zwraca lokalizację pliku, który pierwotnie rozpoczął wykonywanie. Używanie CLI jest równe temu, co uzyskałbyś, gdybyś wykonał pwd
.To jest obsługiwany przez documentation of the CLI SAPI i komentarzem na getcwd
ręcznego stronie:.
CLI SAPI ma - w przeciwieństwie do innych SAPIs - NIE automatycznie zmienia bieżący katalog roboczy, aby ta, którą rozpoczął skrypt rezyduje w
Więc jak:
[email protected] /home/thom $ echo "<?php echo getcwd() . '\n' ?>" >> test.php
[email protected] /home/thom $ php test.php
/home/thom
[email protected] /home/thom $ cd ..
[email protected] /home $ php thom/test.php
/home
oczywiście, patrz także instrukcję w http://php.net/manual/en/function.getcwd.php
AKTUALIZACJA: Od PHP 5.3.0 można również użyć stałej magicznej __DIR__
, która jest odpowiednikiem dirname(__FILE__)
.
Nie zapomnij, że 'dirname (__ FILE __)' jest takie samo jak '__DIR__' –