一尘不染

获取初始运行脚本的绝对路径

php

我搜索了很多内容,并获得了很多不同的解决方案和包含信息的变量来获取绝对路径。但是它们似乎在某些条件下工作,而不在其他条件下工作。有没有一种方法可以获取PHP中已执行脚本的绝对路径?对我来说,该脚本将从命令行运行,但是,如果在Apache等内部运行,则解决方案也应起作用。

说明:最初执行的脚本,不一定是解决方案的编码文件。


阅读 237

收藏
2020-05-26

共1个答案

一尘不染

正确的解决方案是使用以下get_included_files功能:

list($scriptPath) = get_included_files();

这将为您提供初始脚本的绝对路径,即使:

  • 此功能放置在包含的文件中
  • 当前工作目录与初始脚本目录不同
  • 该脚本使用CLI作为相对路径执行

这是两个测试脚本;主脚本和包含的文件:

# C:\Users\Redacted\Desktop\main.php
include __DIR__ . DIRECTORY_SEPARATOR . 'include.php';
echoScriptPath();

# C:\Users\Redacted\Desktop\include.php
function echoScriptPath() {
    list($scriptPath) = get_included_files();
    echo 'The script being executed is ' . $scriptPath;
}

结果;注意当前目录:

C:\>php C:\Users\Redacted\Desktop\main.php
The script being executed is C:\Users\Redacted\Desktop\main.php
2020-05-26