{"record":{"id":"5275af660ae52102","repo":"getgrav/grav","slug":"ziparchiver-zip-php-module-not-installed","errorCode":null,"errorMessage":"ZipArchiver: Zip PHP module not installed...","messagePattern":"ZipArchiver: Zip PHP module not installed\\.\\.\\.","errorType":"exception","errorClass":"InvalidArgumentException","httpStatus":null,"severity":"error","filePath":"system/src/Grav/Common/Filesystem/ZipArchiver.php","lineNumber":272,"sourceCode":"     * @return never\n     */\n    protected function abortExtraction(ZipArchive $zip, string $destination, string $message): void\n    {\n        $zip->close();\n        Folder::delete($destination);\n\n        throw new RuntimeException($message);\n    }\n\n    /**\n     * @param string $source\n     * @param callable|null $status\n     * @return $this\n     */\n    public function compress($source, ?callable $status = null)\n    {\n        if (!extension_loaded('zip')) {\n            throw new InvalidArgumentException('ZipArchiver: Zip PHP module not installed...');\n        }\n\n        // Get real path for our folder\n        $rootPath = realpath($source);\n        if (!$rootPath) {\n            throw new InvalidArgumentException('ZipArchiver: ' . $source . ' cannot be found...');\n        }\n\n        $zip = new ZipArchive();\n        $result = $zip->open($this->archive_file, ZipArchive::CREATE);\n        if ($result !== true) {\n            $error = 'unknown error';\n            if ($result === ZipArchive::ER_NOENT) {\n                $error = 'file does not exist';\n            } elseif ($result === ZipArchive::ER_EXISTS) {\n                $error = 'file already exists';\n            } elseif ($result === ZipArchive::ER_OPEN) {\n                $error = 'cannot open file';","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/getgrav/grav/blob/6040efed04efa69b8209448ed81308e7c24147c2/system/src/Grav/Common/Filesystem/ZipArchiver.php#L254-L290","documentation":"Error \"ZipArchiver: Zip PHP module not installed...\" thrown in getgrav/grav.","triggerScenarios":"Thrown at system/src/Grav/Common/Filesystem/ZipArchiver.php:272 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6040efed04efa69b8209448ed81308e7c24147c2","analyzedAt":"2026-08-17T05:07:31.593Z","schemaVersion":2},"datasetVersion":"2026-08-17T09:17:11.063Z"}