获取symlink'd php脚本的当前目录,而不是实际的PHP脚本

时间:2012-05-10 00:11:19

标签: php directory symlink

我有一个从一个文件夹符号链接到另一个文件夹的脚本

/var/www/default/index.php

符号链接到

/var/www/mysite/index.php

然而,当我从mysite调用 DIR 时,路径会在默认情况下解析为原始路径。如何让它返回mysite路径(符号链接文件夹,而不是实际文件夹)

4 个答案:

答案 0 :(得分:13)

对于Web服务器请求

dirname($ _ SERVER ['SCRIPT_FILENAME'])将为您提供所需的信息。

失败的$ _SERVER ['PHP_SELF']甚至REQUEST_URI都可能满足您的需求,具体取决于您的服务器配置。

对于CLI(命令行)

这在cli(命令行)脚本中不起作用,因为Web服务器添加了$ _SERVER。

幸运的是,使用cli脚本会更容易(因为没有Web服务器可以搞乱事情)。

您只需要阅读启动脚本的命令行:http://php.net/manual/en/reserved.variables.argv.php。第一个参数$ argv [0]始终是用于运行脚本的名称。

答案 1 :(得分:1)

如果要通过符号链接获取当前路径,可以询问主机操作系统:

$path = exec('pwd');

答案 2 :(得分:0)

如果您正在寻找cli脚本的完整未解析的系统路径,则SCRIPT_PATH将不足。

php -f symlink/script.php

SCRIPT_FILENAME 将包含 symlink / script.php

我创建了一个gets the unresolved path to the php file.

的php / gist

以下是该功能的结果:

 $ php -f subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php
 PWD: /tmp/phpcode                                                                           
 SCRIPT_FILENAME: subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php                 
___FILE__ : /tmp/phpcode/app.php                                                             
 getSymlink(): /tmp/phpcode/subdir/mysymlink/subdir/mysymlink/subdir/mysymlink               

答案 3 :(得分:0)

可能有用:

var_dump($_SERVER['PWD']);