我的代码出现以下错误:
警告:
[function.rename]:设备或资源忙于
if ($handle = opendir($temp_images)) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file == $file) {
}
$path = '';
$dir_handle = opendir($path);
chdir($path);
$oldfile = $path.$file ;
$newfile = $path.preg_replace('/[\\&\\%\\$\\ ]+/', '-', $file); // replace &%$ with a -
if(FALSE == rename($oldfile, $newfile))
{
}
}
closedir($handle);
}
问题是什么?如何解决?
答案 0 :(得分:2)
如果你看看
man 2 rename
或http://linux.die.net/man/2/rename
你会看到
EBUSY - 重命名失败,因为oldpath或newpath是某个进程正在使用的目录(可能是当前正在运行的 目录,或作为根目录,或因为它是打开的 用于读取)或由系统使用(例如作为安装点),而系统认为这是一个错误。 (注意 没有要求返回EBUSY case - 无论如何都要进行重命名没有任何问题 - 但如果系统不能,则允许返回EBUSY 否则处理这种情况。)
只打印输出您要重命名的内容,您将看到正在发生的事情
答案 1 :(得分:0)
尝试排除'.'
和'..'
。
if($file == '.' || $file == '..') {
continue;
}
对我有用。希望它将为您工作。谢谢