Текущий рабочий каталог для PHP - это каталог, в котором находится вызываемый файл скрипта. Если ваши файлы выглядят так:
/A
foo.php
tar.php
B/
bar.php
Если вы вызываете foo.php (например: http://example.com/foo.php),, рабочий каталог будет / A /. Если вы вызываете bar.php (например: http://example.com/B/bar.php),, рабочий каталог будет / A / B /.
Там есть, где это сложно. Допустим, что foo.php такой:
<?php
require_once( 'B/bar.php' );
?>
И bar.php это:
<?php
require_once( 'tar.php');
?>
Если мы вызовем foo.php, то bar.php успешно вызовет tar.php, потому что tar.php и foo.php находятся в одном каталоге, который является рабочим каталогом. Если вы вместо этого вызовете bar.php, он потерпит неудачу.
Как правило, вы увидите либо во всех файлах:
require_once( realpath( dirname( __FILE__ ) ).'/../../path/to/file.php' );
или с файлом конфигурации:
// config file
define( "APP_ROOT", realpath( dirname( __FILE__ ) ).'/' );
с остальными файлами, используя:
require_once( APP_ROOT.'../../path/to/file.php' );