diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index a4a48e176..5fa6c7100 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -25,6 +25,7 @@ use Composer\DependencyResolver\Operation\InstallOperation; use Composer\Package\Version\VersionSelector; use Composer\Repository\RepositoryFactory; use Composer\Repository\CompositeRepository; +use Composer\Repository\PlatformRepository; use Composer\Repository\InstalledFilesystemRepository; use Composer\Script\ScriptEvents; use Composer\Util\Silencer; @@ -281,9 +282,14 @@ EOT $pool->addRepository($sourceRepo); $phpVersion = null; + $prettyPhpVersion = null; if (!$ignorePlatformReqs) { - // using those 3 constants to build a version without the 'extra' bit that can contain garbage - $phpVersion = PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION.'.'.PHP_RELEASE_VERSION; + $platformOverrides = $config->get('platform') ?: array(); + // initialize $this->repos as it is used by the parent InitCommand + $platform = new PlatformRepository(array(), $platformOverrides); + $phpPackage = $platform->findPackage('php', '*'); + $phpVersion = $phpPackage->getVersion(); + $prettyPhpVersion = $phpPackage->getPrettyVersion(); } // find the latest version if there are multiple @@ -291,7 +297,12 @@ EOT $package = $versionSelector->findBestCandidate($name, $packageVersion, $phpVersion, $stability); if (!$package) { - throw new \InvalidArgumentException("Could not find package $name" . ($packageVersion ? " with version $packageVersion." : " with stability $stability.")); + $errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); + if ($phpVersion && $versionSelector->findBestCandidate($name, $packageVersion, null, $stability)) { + throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version '.$prettyPhpVersion.'.'); + } + + throw new \InvalidArgumentException($errorMessage .'.'); } if (null === $directory) {