php rename()函数返回";没有这样的文件或目录“;错误


php rename() function returns "No such file or directory" error

我有一个文件夹,里面有几个图像

文件夹为photos_1/130730782

图像为

.jpg
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg

我需要像这个一样重命名文件

.jpg  = 1.jpg
1.jpg = 2.jpg
2.jpg = 3.jpg
3.jpg = 4.jpg
4.jpg = 5.jpg
5.jpg = 6.jpg
6.jpg = 7.jpg

我使用的是这个代码:

$sysid = '130730782';
    $dir = 'photos_1/'.$sysid;
    $myPhotoCount = iterator_count(new DirectoryIterator($dir)) - 1;
    for($i=0; $i<=count($myPhotoCount); $i++){
        $x = $i + 1;
        if($i == 0){
            rename("{$dir}/.jpg", "{$dir}/1.jpg");
        }else{
            rename("{$dir}/{$i}.jpg", "{$dir}/{$x}.jpg");
        }
    }

我得到这个错误:

警告:重命名(photos_1/13070782/.jpg,photos_1/10070782/1.jpg)[function.rename]:中没有这样的文件或目录/home/content/85/66608485/html/Mcloskey/rename.php,第18行

警告:重命名(photos_1/13070782/1.jpg,photos_1/10070782/2.jpg)[function.rename]:中没有这样的文件或目录/home/content/85/66608485/html/Mcloskey/rename.php在线20

我知道文件存在,我在这里做错了什么?

您需要以相反的顺序重命名这些文件。

如果将.jpg重命名为1.jpg,则原始的1.jpg可能会丢失/被覆盖。

从最高的数字开始,然后倒退。

按如下方式重新制作:

.jpg --> 1.jpeg

1.jpg --> 2.jpeg

等等…

它不会对您的文件进行任何更改,因为JPG和JPEG是相同的,并且不会丢失/覆盖。

我最终使用了copy()将文件复制到另一个目录,并在此过程中重命名它们。