簡體   English   中英

PHP 無法重命名文件

[英]PHP cannot rename files

我想重命名我事先閱讀和排序的幾個文件。 但不幸的是,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

看起來您忘記將文件夾名稱放在其他 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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM