2012-11-13 115 views
1

基本上,PHP重命名权限被拒绝(WAMP)

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 
?> 
+0

'。/ source'是一个zip文件,对吧?那么为什么你将它重命名为'X',然后从'X'返回到'。/ source'? – jadkik94

+0

./source是一个压缩文件的内容,解压缩和修补。 – WallabyKid

+0

哦,所以你最后用'.zip'重命名一个目录。好的,我的坏。 – jadkik94

回答

2

你尝试看看,如果有一个打开的文件,你正在重命名的目录?我的猜测是,recurseZip班正在打开$am_zip中的文件,并未正确关闭它。因此,您不能移动/重命名它。您可以通过将2 rename声明放在一起。

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

+0

好主意Thx!,我会尝试将它们堆叠起来,看看会发生什么。 是的,WAMP表示窗口。 – WallabyKid

+0

果然!未修补的原始拉链运行约130k 修补程序,他们增长到刚刚超过5MB。看起来像recurseZip种呛它。我想可能是最大的文件连接? Grrrr .... – WallabyKid

+0

是'rescueZip'类[那一个](http://ramui.com/articles/php-zip-files-and-directory.html)?还是你制作的一个?如果它是一个在线的,我可以试着看看它是否对我也一样,如果你想要排除故障...... – jadkik94

0

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