{"record":{"id":"51f3a61874eb346e","repo":"Intervention/image","slug":"unable-to-read-imagemagick-version-number","errorCode":null,"errorMessage":"Unable to read ImageMagick version number","messagePattern":"Unable to read ImageMagick version number","errorType":"exception","errorClass":"DriverException","httpStatus":null,"severity":"warning","filePath":"src/Drivers/Imagick/Driver.php","lineNumber":151,"sourceCode":"            return false;\n        }\n\n        return count(Imagick::queryFormats($format->name)) >= 1;\n    }\n\n    /**\n     * Return version of ImageMagick library\n     *\n     * @throws DriverException\n     */\n    public function version(): string\n    {\n        $pattern = '/^ImageMagick (?P<version>(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)' .\n            '(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?' .\n            '(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)/';\n\n        if (preg_match($pattern, Imagick::getVersion()['versionString'], $matches) !== 1) {\n            throw new DriverException('Unable to read ImageMagick version number');\n        }\n\n        return $matches['version'];\n    }\n\n    /**\n     * Apply default settings for native image object.\n     *\n     * @throws DriverException\n     */\n    private function applyDefaultSettings(Imagick $imagick): Imagick\n    {\n        try {\n            $background = new ImagickPixel('rgba(255, 255, 255, 0)');\n\n            $imagick->setType(Imagick::IMGTYPE_UNDEFINED);\n            $imagick->setImageType(Imagick::IMGTYPE_UNDEFINED);\n            $imagick->setColorspace(Imagick::COLORSPACE_SRGB);","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/Intervention/image/blob/5598b9e39751c34afc5cdee84abef77f92c26f68/src/Drivers/Imagick/Driver.php#L133-L169","documentation":"Driver::version() parses Imagick::getVersion()['versionString'] with a semver-shaped regex anchored to 'ImageMagick X.Y.Z'; the string did not match. Happens on non-standard builds that report customized version strings (distro patches, --with-package-name renames, forks) or when a future release changes the format. Purely informational API failure.","triggerScenarios":"Calling $driver->version() (or a feature surfacing it) on self-compiled/customized ImageMagick builds, some Homebrew/macports variants, or rebranded forks; a brand-new ImageMagick release with an unanticipated string shape.","commonSituations":"Version-gating code that checks driver capabilities; unusual container base images with patched ImageMagick packages.","solutions":["Print Imagick::getVersion() to see the actual versionString and confirm it is non-standard","Use the numeric form instead: Imagick::getVersion()['versionNumber'] (hex), or pin a standard distro ImageMagick package","Check for a newer release of intervention/image that extends the regex for new build strings"],"exampleFix":"// before\n$version = $driver->version(); // throws on custom build strings\n\n// after\n$info = Imagick::getVersion();\n$version = sprintf('0x%x', $info['versionNumber']); // numeric fallback, always present","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    $version = $driver->version();\n} catch (\\Intervention\\Image\\Exceptions\\DriverException $e) {\n    $info = \\Imagick::getVersion();\n    $version = sprintf('0x%x', $info['versionNumber']); // numeric fallback\n}","preventionTips":["Do not hard-depend on the parsed version string; fall back to versionNumber (hex)","Prefer standard distro ImageMagick packages over custom-branded builds"],"tags":["imagick","version","regex","environment"],"backgroundTag":"library-version-detection-failed","analyzedSha":"5598b9e39751c34afc5cdee84abef77f92c26f68","analyzedAt":"2026-08-23T02:17:31.068Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}