0

私は、ファイルをアップロードし、それらを圧縮し、tmp ファイルを削除するコードを書いています。しかし、リンク解除機能を使用すると、すべてのファイルが削除されません。誰かが理由を説明できますか?

関連するphpコード:

$zip = new ZipArchive();
$target_path = 'img/products/';
$zip->open($target_path.$id_insert.'.zip', ZIPARCHIVE::CREATE);
$img_count = $_POST['count_file'];
for ($i = 1; $i <= $img_count; $i++){
    $temp = 'img'.$i;
    $file = $i.'-'.$id_insert.'-'.$_FILES[$temp]['name'];
    $path = $target_path.basename($file); 
    if(move_uploaded_file($_FILES[$temp]['tmp_name'], $path)) {
        $zip->addFile($path, basename($file));
        $files_to_delete[] = $path;
    }
} 
$zip->close();
foreach($files_to_delete AS $file){
    //unlink(dirname(__FILE__).'/'.$path);
}
4

1 に答える 1

3
foreach($files_to_delete AS $file){
    //unlink(dirname(__FILE__).'/'.$path);
}

このブロックでは、$path を $file に置き換える必要があります。最初に $path をリンク解除した後、$path のファイルはリンク解除されますが、他のすべての反復で同じファイル ($path 変数に割り当てられた最後のファイル) を削除しようとするため、エラーが発生します。

于 2011-06-13T15:22:00.317 に答える