什么';了解php命令行脚本路径的可靠方法是什么?

什么';了解php命令行脚本路径的可靠方法是什么?,php,command-line,Php,Command Line,我有一个带有符号链接的文件系统结构,如下所示: folder123 index.php config.php -> symlink to shared/config.php shared config.php 我在命令行上运行index.php,index.php包括config.php,它是指向其他文件夹中文件的符号链接 如何从config.php脚本中知道index.php文件路径?所需的结果是“folder123”(它的完整路径),而不是“shared”。所

我有一个带有符号链接的文件系统结构,如下所示:

folder123
    index.php
    config.php -> symlink to shared/config.php
shared
    config.php
我在命令行上运行index.php,index.php包括config.php,它是指向其他文件夹中文件的符号链接

如何从config.php脚本中知道index.php文件路径?所需的结果是“folder123”(它的完整路径),而不是“shared”。所以,我不能使用文件

这适用于通过浏览器运行的脚本(至少在我的例子中,它与folder123-基本目录相同):

我也需要一些命令行的东西

看起来像

$_SERVER['PWD']
是我需要的东西,但它没有文档记录,所以我觉得这不是一个可靠的方法。另外,您需要将它与SCRIPT_FILENAME组合以获得所需的结果-PWD显示运行脚本的目录,而不是它的完整路径


getcwd看起来很有希望,但chdir可以对其进行更改-如果找不到更好的替代方案,我将使用它。

我不确定是否有办法确定文件中包含了什么文件,但您可以使用
$argv[0]
$\u SERVER['argv'][0]获取正在运行的程序的名称(
index.php
如果前者不可用

//config.php
//running path
$path = dirname(realpath($argv[0]));

如果您使用PHP5.3或更高版本,您可以使用

$path = __DIR__;
相反


您尝试过getcwd()方法吗?它可以工作,但正如我提到的,可以通过chdir函数进行更改。我只是想可能有更可靠的方法。这将返回
shared
,而不是
folder123
,在函数中,您需要使用
global$argv在引用它之前
$\u服务器是一个超全局的,所以您可以在函数中使用它。
$path = __DIR__;