PHP重命名权限被拒绝(WAMP)

时间:2012-11-13 15:14:19

标签: php wamp rename

基本上,

rename("./source", "./$new_name"); //succeeds, 
//but subsequent reversal... 
rename("./$new_name", ./source"); fails...

至于为什么我想这样做,希望上下文中的代码能解释......

<?php
    //$filename="Simplicity.zip"; (Original Folder)
    //$version ="1.0.4b";
    //End result AM_Simplicity1.0.4b.zip
    $src='source';
    //Destination folder for new Zip file.
    $dst='patched';
    $am_zip = "AM_".rtrim($filename,'.zip');
    $filename = $am_zip.$version.".zip";
    rename("./source", "./$am_zip"); //succeeds
    $src = $am_zip;
    $dst = 'patched';
    include "./recurseZip.php";
    $z=new recurseZip();
    $x = $z->compress($src,$dst,$filename);
    // AND... so that ./source can be emptied on demand later.
    rename("./$am_zip","./source"); //fails... Permission Denied
?>

2 个答案:

答案 0 :(得分:2)

您是否尝试查看您要重命名的目录是否存在打开的文件?我的猜测是recurseZip类正在$am_zip中打开一个文件,而不是正确关闭它。因此,您无法移动/重命名它。您可以通过将2 rename语句放在彼此之后来确保。

另外,wamp标签表明你在Windows上,所以我猜这不是一个真正的权限问题。否则,您应确保使用chmod为目录提供写入权限,可能recurseZip类不保留该目录。

答案 1 :(得分:0)

我找到的解决方案是睡觉(5);在最终重命名之前。