diff --git a/composer.json b/composer.json index 8e9ba218a..6251e3f19 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ }, "require": { "php": "^5.3.2 || ^7.0", - "justinrainbow/json-schema": "^1.6 || ^2.0 || ^3.0 || ^4.0", + "justinrainbow/json-schema": "^3.0 || ^4.0", "composer/ca-bundle": "^1.0", "composer/semver": "^1.0", "composer/spdx-licenses": "^1.0", diff --git a/composer.lock b/composer.lock index 331413f0c..9925bc490 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "deb4df08cdd39eac7d11880586076ba1", + "content-hash": "e18501d127e13e3619f80abbcf372c81", "packages": [ { "name": "composer/ca-bundle", diff --git a/src/Composer/Json/JsonFile.php b/src/Composer/Json/JsonFile.php index 32e6d129e..1a33992f3 100644 --- a/src/Composer/Json/JsonFile.php +++ b/src/Composer/Json/JsonFile.php @@ -157,7 +157,13 @@ class JsonFile } $schemaFile = __DIR__ . '/../../../res/composer-schema.json'; - $schemaData = json_decode(file_get_contents($schemaFile)); + + // Prepend with file:// only when not using a special schema already (e.g. in the phar) + if (false === strpos($schemaFile, '://')) { + $schemaFile = 'file://' . $schemaFile; + } + + $schemaData = (object) array('$ref' => $schemaFile); if ($schema === self::LAX_SCHEMA) { $schemaData->additionalProperties = true;