__FILE__
- это магическая константа , содержащая полный путь к файлу, который вы выполняете. Если вы находитесь во включении, его путь будет содержать содержимое __FILE__
.
Итак, с этой настройкой:
/ папки / случайное / foo.php
<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n" ;
echo "-------\n";
include 'bar/bar.php';
/ папки / случайное / бар / bar.php
<?php
echo getcwd() . "\n";
echo dirname(__FILE__) . "\n";
Вы получите этот вывод:
/folder/random
/folder/random
-------
/folder/random
/folder/random/bar
Итак, getcwd()
возвращает каталог, в котором вы начали выполнение, тогда как dirname(__FILE__)
зависит от файла.
На моем веб-сервере getcwd()
возвращает местоположение файла, который изначально был запущен. Используя CLI, он равен тому, что вы получили бы, если бы выполнили pwd
. Это подтверждается документацией CLI SAPI и комментарием на справочной странице getcwd
:
CLI SAPI, в отличие от других SAPI, НЕ автоматически меняет текущий рабочий каталог на тот, в котором находится запущенный скрипт.
Так как:
thom@griffin /home/thom $ echo "<?php echo getcwd() . '\n' ?>" >> test.php
thom@griffin /home/thom $ php test.php
/home/thom
thom@griffin /home/thom $ cd ..
thom@griffin /home $ php thom/test.php
/home
Конечно, см. Также руководство по http://php.net/manual/en/function.getcwd.php
ОБНОВЛЕНИЕ : Начиная с PHP 5.3.0 вы также можете использовать магическую константу __DIR__
, которая эквивалентна dirname(__FILE__)
.