PHP重命名失败但file_exists为true

时间:2014-01-29 14:16:23

标签: php rename file-exists

我正在尝试重命名文件夹中的所有文件,我希望删除扩展名之前的最后一个字符。

这是我正在使用的代码:

$sql = 'SELECT * FROM tblphotoseries WHERE photoSerieID = ' . mysql_real_escape_string($photoSerieID) . ' AND FKuID = ' . $_SESSION['uID'];
if($series = GetFromDB($sql)){
    foreach ($series as $serie){
        $path = '../uploads/' . $serie["FKcatID"] . '/' . $_SESSION['uCode'] .  '/' . $serie["seriesCode"] . '';
    }

    $files = scandir($path);
    foreach($files as $file) {
        if($file != ".." && $file != "."){
            $new_name = explode(".", $file);
            $ext = $new_name[1];
            $new_name = $new_name[0];
            $new_name[strlen($new_name) - 1] = "";
            $new_name = $new_name . "." . $ext;
            $new_name = (string)$new_name;
            echo $file . " -> " . $new_name . "\n\r";
            clearstatcache();
            if(file_exists($path . '/' . $file)){
                echo "file_exists \n\r";
                clearstatcache();                   
                if(rename($path . '/' . $file, $path . '/' . $new_name)){
                    echo "rename successful \n\r";
                }else{
                    echo "rename failed \n\r";
                }
            }

        }
    }
}

这输出以下内容:

AA04a_.jpg -> AA04a.jpg

file_exists 

rename failed 

AA04b_.png -> AA04b.png

file_exists 

rename failed 

AA04c_.png -> AA04c.png

file_exists 

rename failed 

有人能发现这里出了什么问题吗?权限还可以,我在重命名之前已经在文件上尝试了chmod 0777,但没有成功。

谢谢, 瑞克

解决:

$new_name[strlen($new_name) - 1] = "";

必须由

取代
$new_name = substr_replace($new_name, '', strlen($new_name) - 1, 1);

0 个答案:

没有答案