首先,让我们把这些排除在外:
- 目录上没有打开的句柄。
- 目录中没有文件。
chmod
获得 0777 的权限并不能防止该错误。- 目录名是正确的。
那么,这是我的问题。 rmdir()
尝试删除目录时抛出此错误:
rmdir(098f6bcd4621d373cade4e832627b4f6) [function.rmdir]:第 124 行的 path\to\administrate.php 中的权限被拒绝
098f6bcd4621d373cade4e832627b4f6是目录的名称。
这是脚本的相关部分。
if(is_dir($userhash)) :
foreach (new DirectoryIterator($userhash) as $fileInfo) {
$fileName = $fileInfo->getFilename();
if($fileInfo->isDot()) continue;
if(!rename($userhash.'/'.$fileName , 'trashcan/'.$username.'/'.$fileName)) {
echo '<p class="error">Could not move '.$fileName.'</p>';
$err = 1;
}
}
else :
echo '<p class="error">Unable to delete files! error: 67</p>';
$err = 1;
endif;
//JUST TO BE SURE
chmod('./',0777);
chmod($userhash,0777);
// RMDIR ONCE THE DIR IS EMPTY.
if(rmdir($userhash))
echo '<p class="success">Deleted the user directory. The files are in the trash.</p>';
else {
echo '<p class="error">Could not remove the user directory. Error: 656</p>';
$err = 1;
}
更新
'jake'
我在同一目录中手动创建了目录。我做到了rmdir('jake');
,而且效果很好。现在,我在同一目录中手动创建了'098f6bcd4621d373cade4e832627b4f6'
一个目录。我做了rmdir('098f6bcd4621d373cade4e832627b4f6');
,它出错了!
更新 2
这开始看起来像一些奇怪rmdir()
的错误,看起来不太可能。这是我创建的目录名称,然后尝试使用rmdir
;删除
098f6bcd4621d373cade4e832627b4f6 | didn't work (quintuple checked)
098f6bcd4621d373cade4e832627b4f7 | worked
098f6bcd4621d373cade4e832627b4f | worked
098f6bcd4621d373cade4e832627b4f66 | worked