为什么PHP rename()正在删除文件?

时间:2017-09-05 12:21:57

标签: php rename file-rename

我无法识别我的代码有什么问题。 这行代码是删除文件而不是重命名。

for($i=0;$i<(7-$n);$i++){   
    rename($location."/".($last-$i).".txt", $location."/".($last-$i-$n).".txt");
    rename($location."/".($last-$i).".bmp", $location."/".($last-$i-$n).".bmp");            
}

我已经回显了源文件名和目标文件名,看起来对我来说是正确的。 我做同样的事情&#34;变沙拉&#34;使用unlink()函数,它的行为与预期一致。 我试着创建自己的rename()函数:

function myRename($old, $new){
  $content = printFile($old); //this function returns the content of a file.
  unlink($old);
  $file = fopen($new, "w");
  fwrite($file,$content);
  fclose($file);
}

发生同样的错误。所有重命名的文件都将被删除。 这让我觉得&#34;变量沙拉有一个愚蠢的错误&#34;我做了。 但我无法弄清楚是什么。回显的结果对我来说是正确的。 PHP并没有给我任何与问题相关的警告。

回应结果:

来源:&#34; data / directory_exemple / 47.txt&#34; 目的地:&#34; data / directory_exemple / 46.txt&#34;

感谢您的帮助!

编辑:看起来只有一个文件被重命名。其余的被删除。 也许这是一个逻辑错误。

1 个答案:

答案 0 :(得分:2)

以下功能正常运行

function myRename($old, $new){
  $content = printFile($old); //this function returns the content of a file.
  unlink($old);
  $file = fopen($new, "w");
  fwrite($file,$content);
  fclose($file);
}

我已使用示例文件测试了您的myRename()函数,它重命名。

确保您拥有正确的路径,从printFile()获取内容并写入权限