Rumah  >  Soal Jawab  >  teks badan

Tingkah laku pelik apabila cuba mengekstrak fail zip dalam bekas docker menggunakan laravel

Saya cuba mengekstrak arkib zip dalam aplikasi bekas docker yang menjalankan Laravel 9 pada PHP 8.1.7 dan saya mendapat ralat pelik.

Jadi jika cuba kod ini dalam pengawal

$zip = new ZipArchive();
    $result = $zip->open("/var/www/html/public/my_archive.zip");
    if ($result === TRUE) {
        $zip->extractTo("/var/www/html/public/my_folder");
    }
    $zip->close();

Fail dalam arkib diekstrak dengan betul, tetapi ralat ini dikembalikan:

Pengecualian ralat ZipArchive::extractTo(/var/www/html/public/my_folder/my_file.xml): Operasi gagal: Operasi tidak dibenarkan

Jika saya menjalankan kod yang sama dalam php artisantinker ia berfungsi.

Ada sesiapa ada penyelesaian untuk masalah ini?

Nampaknya bukan isu berkaitan kebenaran , folder itu dicipta dengan 777 kebenaran dan fail disalin dengan betul.

Edit

root@5899a5badc45:/var/www/html/public/my_folder# ls -lhart *
  -rwxrwxrwx 1 1000 1000 1.3K Oct 25 12:24 phpunit.xml

Terima kasih

P粉665679053P粉665679053260 hari yang lalu485

membalas semua(1)saya akan balas

  • P粉668804228

    P粉6688042282024-01-08 10:09:20

    Saya mengalami masalah yang sama. Pada akhirnya, saya menghadapi masalah ini kerana saya mengekstrak fail dari direktori pemasangan Windows saya.

    Maksud saya /var//html/public/my_folder/mnt/dev/my_folder 的符号链接,来自 Windows (C:例如 devmy_folder).

    Memandangkan sistem fail berbeza daripada Linux dan Windows, nampaknya sesuatu yang khusus dalam kelas ZipArchive menyebabkan ralat ini.

    Saya membetulkannya dengan mengekstrak /tmp/my_folder 中的文件然后将其移动到 /var//html/public/my_folder.

    $zip = new ZipArchive();
    $res = $zip->open($filename);
    
    if ($res === true) {
      $temp = '/tmp/my_folder';
      mkdir($temp, 0777, true);
    
      $zip->extractTo($temp);
      $zip->close();
    
      rename($temp, '/var/html/public/my_folder');
    } else {
      echo 'Failed to open the zip file.';
    }

    Semoga ini membantu.

    balas
    0
  • Batalbalas