php安排时出现dir,为什么许多PHP开发人员使用“__DIR__”. ‘../otherFolder’”?

不,它并不总是一样的. __DIR__是文件的目录,而不是当前的工作目录.该代码本质上是动态生成的绝对路径.

把它写入〜/ foo / script.php:

// Ta, Sven

// https://php.net/manual/en/function.realpath.php#84012

function get_absolute_path($path) {

$path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);

$parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');

$absolutes = array();

foreach ($parts as $part) {

if ('.' == $part) continue;

if ('..' == $part) {

array_pop($absolutes);

} else {

$absolutes[] = $part;

}

}

return '/' . implode(DIRECTORY_SEPARATOR, $absolutes);

}

$p = __DIR__ . '/../bar';

echo $p . "\n" . get_absolute_path($p) . "\n";

?>

现在:

$cd ~/foo

$php script.php

/home/me/foo/../bar

/home/me/bar

$cd ~/

$php foo/script.php

/home/me/foo/../bar

/home/me/bar

但是如果我们摆脱了__DIR__:

$cd ~/foo

$php script.php

../bar

/home/me/bar

$cd ~/

$php foo/script.php

../bar

/home/bar

请参阅……最后一条路径不正确.

如果我们在任何地方使用这些路径,它们就会在没有__DIR__的情况下被破坏.

每当你编写一个脚本时,你应该确保从一个目录以外的目录执行它是安全的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值