知道php命令行脚本路径的可靠方法是什么?

时间:2012-06-20 13:20:52

标签: 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”(以及它的完整路径),而不是“共享”。所以,我不能使用__FILE __。

这适用于脚本,由浏览器运行(至少在我的情况下,它与folder123 - 基础目录相同):

$_SERVER['DOCUMENT_ROOT']

我也需要命令行的东西。

看起来像是

$_SERVER['PWD']

是我需要的东西,但它没有记录,所以我觉得它不是一种可靠的方法。此外,您需要将其与SCRIPT_FILENAME组合以获得所需的结果 - PWD显示运行脚本的目录,而不是它的完整路径。

getcwd看起来很有前途,但可以通过chdir进行更改 - 如果我找不到更好的选择,我会使用它。

2 个答案:

答案 0 :(得分:10)

我不确定是否有办法确定哪个文件包含文件,但您可以使用index.php获取正在运行的程序的名称(在这种情况下为$argv[0]),或者可能如果前者不可用,则$_SERVER['argv'][0]

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

答案 1 :(得分:-2)

如果您使用PHP 5.3或更高版本,则可以使用

$path = __DIR__;

代替。

http://php.net/manual/en/language.constants.predefined.php