得到symlink'd PHP脚本的当前目录,而不是实际的PHP脚本(get current

2019-09-17 03:10发布

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

/var/www/default/index.php

这被链接到

/var/www/mysite/index.php

然而,当我从mysite的调用DIR路径解析为在默认情况下,origial路径。 我怎么让它返回mysite的路径(符号链接文件夹,而不是实际的文件夹)

Answer 1:

对于Web服务器的请求

目录名($ _ 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]始终是被用来运行脚本的名称。



Answer 2:

如果你想获得与符号连接的电流路径 ,你可以问你的主机操作系统:

$path = exec('pwd');



Answer 3:

如果你正在寻找一个命令行脚本的完整悬而未决系统路径,SCRIPT_PATH不足。

php -f symlink/script.php

SCRIPT_FILENAME将包含符号链接/运行script.php

我创建了一个PHP /要旨获取到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               


文章来源: get current directory of symlink'd php script and not actual php script