is_dir说dir不存在但它存在

时间:2014-05-12 12:28:11

标签: php filesystems

我不确定这里有什么问题。出于某种原因,is_dir函数对我来说无法正常工作。

class A
{
  private $path

  public function setPath($path)
  {
     if(!is_dir(!$path)){
      throw new Exception('Invalid path');
    }

  }
}

$obj = new A;
$obj->setPath('/usr/htdocs/site/');

在这行代码之后抛出异常无效路径。我检查了/ usr / htdocs / site / path存在。可能是什么问题?

2 个答案:

答案 0 :(得分:1)

在路径变量

之前删除!

尝试这样:

 if(!is_dir($path)){
      throw new Exception('Invalid path');
    }

答案 1 :(得分:0)

!$ path表示如果有任何内容!$ path,则为false。所以它将是!is_dir(false)。

我认为你的代码将是if(!is_dir($ path)){... NOT if(!is_dir(!$ path)){

小更新:

正如@NiettheDarkAbsol所说,is_dir将字符串(目录名称)作为参数,所以false [从!$ path获取($ path应该是' / usr / htdocs / site /'在这种情况下,所以!$ path应该是bool false)]将被转换为字符串'' (空)。

''''在大多数常用的文件系统中是无效的目录名称。因此,is_dir将无法通过该无效名称找到任何目录。因此,它将返回false,这会触发异常抛出,报告路径无效。

感谢@NiettheDarkAbsol告诉我剩下的事情。