0

upload / project1/updateにファイルがあります。

問題は、更新中のファイルのみが削除されることです。フォルダアップロードのディレクトリを削除したい...つまり、フォルダ名「project1」と「update」も、更新中のファイルが削除された後に削除されます。間違いを見つけることができますか?

$id = $_GET['id'];
$filename = $_GET['filename']; //gets the file name eg:update.zip
$fname = $_GET['fname']; //gets the folder name eg: project1
$upload = "upload/";

$name = explode(".", $filename);
$folder = $fname."/".$name[0];

$files = glob($upload.$folder.'/*'); // get all file names
foreach($files as $file)
{ // iterate files
if(is_file($file))
 unlink($file); // delete file dlm folder

}

closedir($name[0]); //close update dir
rmdir($name[0]); //remove update dir

このコーディングは警告を出します

警告:closedir()は、パラメーター1がリソースであることを想定しています。

警告:rmdir(update)[function.rmdir]:そのようなファイルまたはディレクトリはありません。

ただし、ディレクトリのアップロードで、このファイルproject1/updateを作成します。

また、ファイル名は「update.zip」です。これはデータベースのみの名前です。ディレクトリにはありません。

4

1 に答える 1

0

PHP関数closedir()で以前に開かれていない(そしてファイルハンドルに保存されていない)ディレクトリにはできません。opendir()必要closedir()に応じて、最初にを使用してこのディレクトリへのファイルハンドルを取得する必要がありますopendir()。これはPHPマニュアルによるものです:http://php.net/manual/en/function.closedir.php

さらに、rmdir()ディレクトリが必要な場合は、完全に空である必要があり、適切な権限が必要です。そうしないと、エラーが発生します。これもPHPマニュアルに準拠しています:http://php.net/manual/en/function.rmdir.php

于 2013-03-01T07:13:28.937 に答える