我在装有 PHP 5.4.4 的 Windows Server 2008 R2 机器上运行 Apache HTTP 服务器 2.4。
我的E:\
驱动器上有以下目录结构:
E:\Dir1\Dir2\Dir3
Dir1
除了上面显示的子目录之外,所有目录(Dir2
和Dir3
)都是空的(它们没有文件)。
我正在尝试删除Dir3
然后查看目录的内容Dir2
以确保那里没有任何内容。我编写了以下 PHP 脚本来测试它:
<?php
$currentDir = "E:\\Dir1\\Dir2\\Dir3";
$parentDir = dirname( $currentDir ); // Get the parent directory for Dir3.
rmdir ( $currentDir ); // Remove directory Dir3.
echo "<b>Current directory:</b> " . $currentDir . " <b><< I don't exist, I was just deleted.</b><br />";
echo "<b>Parent directory:</b> " . $parentDir. "<br />";
echo "<b>According to 'scandir', the parent directory contains:</b> ";
print_r( scandir( $parentDir, SCANDIR_SORT_NONE ) );
echo "<br /><br />";
?>
如果我没有在 Windows 资源管理器中Dir3
打开,上面的脚本可以完美运行并提供以下输出:
当前目录: E:\Dir1\Dir2\Dir3 << 我不存在,我只是被删除了。
父目录: E:\Dir1\Dir2
根据'scandir',父目录包含: Array ( [0] => . [1] => .. )
但是,如果我Dir3
在 Windows 资源管理器中打开,我会得到以下输出:
当前目录: E:\Dir1\Dir2\Dir3 << 我不存在,我只是被删除了。
父目录: E:\Dir1\Dir2
根据'scandir',父目录内容: Array ( [0] => . [1] => .. [2] => Dir3 )
请注意,Dir3
出现在 的内容数组中Dir2
。换句话说,即使我知道它不存在,scandir()
认为它仍然存在(Windows 资源管理器将我踢回)。Dir3
Dir2
有谁知道为什么会这样?