1

基本的、

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
?>
4

2 に答える 2

2

名前を変更するディレクトリに開いているファイルがあるかどうかを確認しようとしましたか? 私の推測では、recurseZipクラスがファイルを開き、$am_zip適切に閉じていないということです。したがって、移動/名前変更はできません。rename2 つのステートメントを前後に配置するだけで確認できます。

また、wamp タグは Windows を使用していることを示唆しているため、実際には許可の問題ではないと思います。それ以外の場合はchmod、ディレクトリへの書き込み権限を与えるために使用することを確認する必要がありますrecurseZip。クラスがそれを保持していない可能性があります。

于 2012-11-13T15:54:29.017 に答える
0

私が見つけた解決策は、sleep(5); です。最終的な名前変更の前に。

于 2012-11-13T18:15:09.200 に答える