J'essaie d'extraire une archive zip dans une application conteneur Docker exécutant Laravel 9 sur PHP 8.1.7 et j'obtiens une erreur étrange.
Donc, si vous essayez ce code dans le contrôleur
$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();
Les fichiers de l'archive sont extraits correctement, mais cette erreur est renvoyée :
Exception d'erreur ZipArchive::extractTo(/var/www/html/public/my_folder/my_file.xml) : Échec de l'opération : Opération non autorisée
Si j'exécute le même code dans php artisantinker, cela fonctionne.
Quelqu'un a-t-il une solution à ce problème ?
Cela ne semble pas être un problème lié aux autorisations , le dossier est créé avec 777 autorisations et les fichiers sont copiés correctement.
Modifier
root@5899a5badc45:/var/www/html/public/my_folder# ls -lhart * -rwxrwxrwx 1 1000 1000 1.3K Oct 25 12:24 phpunit.xml
Merci
J'ai eu exactement le même problème. De mon côté, j'ai rencontré ce problème car j'extrayais des fichiers du répertoire de mon installation Windows.
Je veux dire
/var//html/public/my_folder
是/mnt/dev/my_folder
的符号链接,来自 Windows (C:例如 devmy_folder
).Étant donné que le système de fichiers est différent de Linux et Windows, il semble que quelque chose de spécifique dans la classe ZipArchive soit à l'origine de cette erreur.
J'ai résolu ce problème en extrayant
/tmp/my_folder
中的文件然后将其移动到/var//html/public/my_folder
.J'espère que cela vous aidera.