Правильное решение - использовать функцию:list($scriptPath) = get_included_files();
# C:UsersRedactedDesktopmain.php
include __DIR__ . DIRECTORY_SEPARATOR . 'include.php';
echoScriptPath();
# C:UsersRedactedDesktopinclude.php
function echoScriptPath() {
list($scriptPath) = get_included_files();
echo 'The script being executed is ' . $scriptPath;
}
Это даст вам абсолютный путь исходного скрипта, даже если:
- Эта функция помещается внутри включенного файла
- Текущий рабочий каталог отличается от исходного каталога скрипта
- Сценарий выполняется с CLI, как относительный путь
Вот два тестовых сценария; основной скрипт и прилагаемый файл:
C:>php C:UsersRedactedDesktopmain.php
The script being executed is C:UsersRedactedDesktopmain.php
И результат; обратите внимание на текущий каталог:
__FILE__