Могу ли я получить путь к файлу PHP, первоначально вызванному внутри включенного файла?

Допустим, у нас есть index.php и он хранится в /home/user/public/www а index.php вызывает класс Foo->bar() из файла inc/app/Foo.class.php .

Я хотел бы, чтобы функция bar в классе Foo путь /home/user/public/www в этом экземпляре – я не хочу использовать глобальную переменную, передавать переменную и т. Д.

Разве это не облегчит вам работу с каталогом сценария?

 $dir=dirname($_SERVER["SCRIPT_FILENAME"]) 

Вы можете использовать debug_backtrace, чтобы посмотреть на вызывающий путь и получить файл, вызывающий эту функцию.

Короткий пример:

 class Foo { function bar() { $trace = debug_backtrace(); echo "calling file was ".$trace[0]['file']."\n"; } } 

getcwd() получает текущий рабочий каталог

Он может быть изменен по разным причинам сторонними модулями, включает или даже ваш собственный код, chdir() .

debug_backtrace() поскольку предложенный Devon – это ответ, который вы ищете.

Найди его. getcwd ().