2012-11-13 188 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);最終重命名之前。