12

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

/var/www/default/index.php

这是符号链接到

/var/www/mysite/index.php

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

4

4 回答 4

14

对于 Web 服务器请求

dirname($_SERVER['SCRIPT_FILENAME']) 会给你你所需要的。

失败 $_SERVER['PHP_SELF'] 甚至 REQUEST_URI 可能有你需要的东西,这取决于你的服务器配置。

对于 CLI(命令行)

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

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

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

于 2012-05-10T00:46:16.533 回答
2

如果您想使用符号链接获取当前路径,您可以询问您的主机操作系统:

$path = exec('pwd');

于 2018-07-27T14:25:40.090 回答
0

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

php -f symlink/script.php

SCRIPT_FILENAME将包含symlink/script.php

我创建了一个 php/gist 来获取 php 文件的未解析路径。

这是函数的结果:

 $ 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               
于 2016-06-05T02:48:40.533 回答
0

可能有用:

var_dump($_SERVER['PWD']);
于 2020-05-05T07:42:05.143 回答