PHP:is_dir(),用于诸如";之类的文件夹/文件夹”;返回false,除非我将它们指定为“”/文件夹”;


PHP: is_dir() for folders such as "./folder" return false unless I specify them as "../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'));

它们返回CCD_ 5。我是不是错过了一些显而易见的东西?它应该这样工作吗?我不明白。

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

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

然后var_dump(is_dir('../images'));将在index.phpsubfolder/index.php 中返回true

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

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