6

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

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 进行更改 - 如果我找不到更好的替代方案,我会使用它。

4

2 回答 2

12

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

//config.php
//running path
$path = dirname(realpath($argv[0]));
于 2012-06-20T14:31:47.273 回答
-2

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

$path = __DIR__;

反而。

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

于 2015-05-28T14:08:04.060 回答