Самый простой способ получить абсолютный путь изначально выполненного сценария из этого «основного» сценария и любого сценария, включенного в include
, require
, require_once
, - сохранить его в константе в началеОсновной сценарий:
define( 'SCRIPT_ROOT', __FILE__ );
__FILE__
возвращает путь к текущему сценарию.При использовании внутри включенного сценария возвращается путь включенного файла , а не сценарий, изначально запускаемый при запросе OP:
Уточнение: исходный исполняемый сценарий, а не файлв настоящее время
Решение по сохранению __FILE__
в константу проще и быстрее, чем извлечение пути с использованием debug_backtrace()
Приведенное выше решение подходит, когда естьэто один «основной» сценарий, который include
использует каждый другой необходимый сценарий, как в большинстве веб-приложений.
Если это не так, и может быть несколько «базовых сценариев», тогда следует избегать переопределений и иметьправильный путь, сохраненный внутри константы, каждый скрипт может начинаться с:
if( ! defined( 'SCRIPT_ROOT' ) ) {
define( 'SCRIPT_ROOT`, __FILE__ );
}