我有一个从一个文件夹符号链接到另一个文件夹的脚本
/var/www/default/index.php
符号链接到
/var/www/mysite/index.php
然而,当我从mysite调用 DIR 时,路径会在默认情况下解析为原始路径。如何让它返回mysite路径(符号链接文件夹,而不是实际文件夹)
答案 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']);