Ich versuche, ein Zip-Archiv in einer Docker-Container-Anwendung zu extrahieren, auf der Laravel 9 unter PHP 8.1.7 ausgeführt wird, und es tritt ein seltsamer Fehler auf.
Also, wenn Sie diesen Code im Controller ausprobieren
$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();
Die Dateien im Archiv werden korrekt extrahiert, es wird jedoch dieser Fehler zurückgegeben:
Fehlerausnahme ZipArchive::extractTo(/var/www/html/public/my_folder/my_file.xml): Vorgang fehlgeschlagen: Vorgang nicht zulässig
Wenn ich den gleichen Code in PHP Artistinker ausführe, funktioniert es.
Hat jemand eine Lösung für dieses Problem?
Scheint kein Berechtigungsproblem zu sein , der Ordner wird mit 777-Berechtigungen erstellt und die Dateien werden korrekt kopiert.
Bearbeiten
root@5899a5badc45:/var/www/html/public/my_folder# ls -lhart * -rwxrwxrwx 1 1000 1000 1.3K Oct 25 12:24 phpunit.xml
Danke
我遇到了完全相同的问题。在我这边,我遇到了这个问题,因为我正在从 Windows 安装的目录中提取文件。
我的意思是
/var//html/public/my_folder
是/mnt/dev/my_folder
的符号链接,来自 Windows (C:例如 \dev\my_folder
)。由于文件系统与 Linux 和 Windows 不同,似乎 ZipArchive 类中的某些特定内容会导致此错误。
我通过提取
/tmp/my_folder
中的文件然后将其移动到/var//html/public/my_folder
来修复此问题。希望这会有所帮助。