PHP无法重命名文件

时间:2019-12-12 13:50:08

标签: php rename

我想重命名一些我已经事先读取和排序的文件。但不幸的是,PHP脚本可以运行,但是文件未重命名。知道为什么。路径正确。我还确保使用chmod对每个文件都具有权限。

 <?php

$directory = ($_POST['path']);
$filecount = 0;
$files = glob($directory . "*");
if ($files){
 $filecount = count($files);
}

$allDetails = explode("/", $directory);
$regNo=($allDetails[1]);

$files = array();
  if ($handle = opendir($directory)) {
      while (false !== ($file = readdir($handle))) {
        if(($file != ".") and ($file != "..")) {
                $files[] = $file; // put in array.
        }
      }

      natsort($files); // sort.


      $i = 0;
      $no = 1;
    foreach($files as $file) {

       chmod($file, 0777);
      if($i==0){
      $newName = $regNo."_BOUND_TOP_R.tif";
      rename($directory.$file, $newName);
    }else if($i==1){
      $newName = $regNo."_BOUND_TOP_V.tif";
      rename($file, $newName);
    }else if($i==$filecount-2){
      $newName = $regNo."_BOUND_BOTTOM_R.tif";
      rename($file, $newName);
    }else if($i==$filecount-1){
      $newName = $regNo."_BOUND_BOTTOM_V.tif";
      rename($file, $newName);
    }else if($i%2 == 0){
      $newName = $regNo."_f0000"+$no+"R.tif";
      rename($file, $newName);
      $no++;
    } else if($i%2 == 1){
        $newName = $regNo."_f0000"+$no+"V.tif";
        rename($file, $newName);
        $no++;
      }
      $i++;
    }

      closedir($handle);
  }

?>

这是我得到的错误:

Warning: rename(00002-scan_2019-11-19_09-34-37l.tif,R40_BOUND_TOP_V.tif): No such file or directory in /var/www/html/CanvasCreator/renameImages.php on line 40

1 个答案:

答案 0 :(得分:0)

您似乎忘记了将文件夹名称放在其他if语句中,而只在第一个if语句中引用$ directory:

if($i==0){
      $newName = $regNo."_BOUND_TOP_R.tif";
      // Does this one work? It has $directory.
      rename($directory.$file, $newName);  
    }else if($i==1){
      // but the rest do not
      $newName = $regNo."_BOUND_TOP_V.tif";
      rename($file, $newName);
    }else if($i==$filecount-2){
      $newName = $regNo."_BOUND_BOTTOM_R.tif";
      rename($file, $newName);
    }else if($i==$filecount-1){
      $newName = $regNo."_BOUND_BOTTOM_V.tif";
      rename($file, $newName);
    }else if($i%2 == 0){
      $newName = $regNo."_f0000"+$no+"R.tif";
      rename($file, $newName);
      $no++;
    } else if($i%2 == 1){
        $newName = $regNo."_f0000"+$no+"V.tif";
        rename($file, $newName);
        $no++;
      }
      $i++;
    }

,然后根据jibsteroos的评论,将连接器固定为.,而不是+

$newName = $regNo."_f0000"+$no+"V.tif";

应该是

$newName = $regNo . '_f0000' . $no . 'V.tif';