php rename()设备或资源忙

时间:2011-12-26 19:33:07

标签: php rename

我的代码出现以下错误:

  

警告:

     

[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);
}

问题是什么?如何解决?

2 个答案:

答案 0 :(得分:2)

如果你看看

man 2 rename 

http://linux.die.net/man/2/rename

你会看到

  

EBUSY - 重命名失败,因为oldpath或newpath是某个进程正在使用的目录(可能是当前正在运行的   目录,或作为根目录,或因为它是打开的                 用于读取)或由系统使用(例如作为安装点),而系统认为这是一个错误。 (注意   没有要求返回EBUSY                 case - 无论如何都要进行重命名没有任何问题 - 但如果系统不能,则允许返回EBUSY   否则处理这种情况。)

只打印输出您要重命名的内容,您将看到正在发生的事情

答案 1 :(得分:0)

尝试排除'.''..'

if($file == '.' || $file == '..') {
    continue;
}

对我有用。希望它将为您工作。谢谢