Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP无法重命名文件_Php_Rename - Fatal编程技术网

PHP无法重命名文件

PHP无法重命名文件,php,rename,Php,Rename,我想重命名几个我已经读过并排序过的文件。但不幸的是,php脚本运行,但文件没有重命名。你知道为什么吗。路径是正确的。我还确保我有权使用chmod访问每个文件 <?php $directory = ($_POST['path']); $filecount = 0; $files = glob($directory . "*"); if ($files){ $filecount = count($files); } $allDetails = explode("/", $directo

我想重命名几个我已经读过并排序过的文件。但不幸的是,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);
  }

?>

您似乎忘记在其他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++;
    }
根据Jibstroos的评论,将连接符改为
,而不是
+

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

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

错误在说什么?打开错误报告?抱歉,我是PHP新手…在哪里可以看到错误报告?请看。。。。顺便说一句,您发布的代码是灾难性的……至少要考虑数组映射,而不是所有那些“ifs”和“else”,您可能还需要检查
chmod($file,0777)实际返回。如果
为false
,则chmod失败(如果您没有对chmod的写访问权限,则会发生这种情况,并且还会导致重命名失败)。对于字符串连接,请使用
,而不是
+
,例如
$newName=$regNo.\u f0000“+$no+”V.tif”
$newName = $regNo . '_f0000' . $no . 'V.tif';