我有一个从一个文件夹符号链接到另一个文件夹的脚本
/var/www/default/index.php
这是符号链接到
/var/www/mysite/index.php
但是,当我从 mysite 调用DIR时,路径会解析为默认情况下的原始路径。我如何让它返回 mysite 路径(符号链接文件夹,而不是实际文件夹)
对于 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] 始终是用于运行脚本的名称。
如果您想使用符号链接获取当前路径,您可以询问您的主机操作系统:
$path = exec('pwd');
如果您正在寻找 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
可能有用:
var_dump($_SERVER['PWD']);