PHP: is_dir() 用于文件夹,例如“./folder”返回 false 除非我将它们指定为“../folder”
我的网站的层次结构是这样的:
/
/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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您从
/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.