PHP: is_dir() 用于文件夹,例如“./folder”返回 false 除非我将它们指定为“../folder”

发布于 2025-01-02 16:51:06 字数 877 浏览 1 评论 0原文

我的网站的层次结构是这样的:

/
/webroot/
/webroot/index.php
/webroot/images/foo.jpg

我没有 / 的写入权限,但我对 /webroot 内的任何内容都有写入权限。
现在说在index.php 中我有以下任何命令:

var_dump(is_dir('./images/frontpage'));
var_dump(is_dir('images/frontpage'));
var_dump(is_dir('/webroot/images/frontpage'));
var_dump(is_dir('.\images\frontpage'));

它们都将返回false。但如果在 webroot\index.php 中我有...

    var_dump(is_dir('../images'));

...它们返回 true。我错过了一些明显的事情吗?它应该这样工作吗?我不明白这一点。

但是:如果我有这样的东西:

/
/webroot/
/webroot/index.php
/webroot/images/foo.jpg
/webroot/subfolder/index.php

那么 var_dump(is_dir('../images')); 将在 index.php 中返回 true code> 和 subfolder/index.php

The hierarchy of my site is like this:

/
/webroot/
/webroot/index.php
/webroot/images/foo.jpg

I do not have write permissions for /, but I do for anything within /webroot.
Now say within index.php I have any of these commands:

var_dump(is_dir('./images/frontpage'));
var_dump(is_dir('images/frontpage'));
var_dump(is_dir('/webroot/images/frontpage'));
var_dump(is_dir('.\images\frontpage'));

They will all return false. But if within webroot\index.php I have...

    var_dump(is_dir('../images'));

...they return true. Am I missing something obvious? Is it supposed to work this way? I don't understand this.

BUT: If I have something like this:

/
/webroot/
/webroot/index.php
/webroot/images/foo.jpg
/webroot/subfolder/index.php

Then var_dump(is_dir('../images')); will return true both in index.php and in subfolder/index.php

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

古镇旧梦 2025-01-09 16:51:06

如果您从 /webroot/subfolder/ 调用它们,两者都会返回 true。

... 取决于您的当前工作目录。从 /webroot/subfolder/some.php 调用 /webroot/index.php 将使 /webroot/subfolder/ 成为当前工作目录。因此 '../images' 将始终是一个目录并且它将返回 true。

Both will return true if you are calling them from /webroot/subfolder/.

.. and . depends on your current working directory. Calling /webroot/index.php from /webroot/subfolder/some.php will make /webroot/subfolder/ the current working directory. Hence '../images' will always be a directory and it'll return true.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文