Composer设置忽略版本匹配的方法
Composer简介
Composer是PHP的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer不是一个包管理器。是的,它涉及"packages"和"libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。
执行composerinstall遇到错误:Yourrequirementscouldnotberesolvedtoaninstallablesetofpackages.这是因为不匹配composer.json要求的版本。
完整错误如下:
vagrant@homestead:/usr/share/nginx/html/laravel-blog$sudocomposerinstall Loadingcomposerrepositorieswithpackageinformation Installingdependencies(includingrequire-dev)fromlockfile Yourrequirementscouldnotberesolvedtoaninstallablesetofpackages. Problem1 -Installationrequestfordoctrine/instantiator1.0.3->satisfiablebydoctrine/instantiator[1.0.3]. -doctrine/instantiator1.0.3requiresphp~5.3->yourPHPversion(7.0.3)doesnotsatisfythatrequirement. Problem2 -doctrine/instantiator1.0.3requiresphp~5.3->yourPHPversion(7.0.3)doesnotsatisfythatrequirement. -phpunit/phpunit-mock-objects2.3.0requiresdoctrine/instantiator~1.0,>=1.0.1->satisfiablebydoctrine/instantiator[1.0.3]. -Installationrequestforphpunit/phpunit-mock-objects2.3.0->satisfiablebyphpunit/phpunit-mock-objects[2.3.0].
提示我的PHP7版本太高,不符合composer.json需要的版本,但是在PHP7下应该也是可以运行的,composer可以设置忽略版本匹配,命令是:
composerinstall--ignore-platform-reqs
or
composerupdate--ignore-platform-reqs
再次执行composer命令可以正常安装包了。
如果提示警告:
Cannotcreatecachedirectory/home/vagrant/.composer/cache/repo/https---packagist.org/,ordirectoryisnotwritable.Proceedingwithoutcache Cannotcreatecachedirectory/home/vagrant/.composer/cache/files/,ordirectoryisnotwritable.Proceedingwithoutcache
这是在虚拟机中执行composer,提示这个目录没有可写权限,composer无法缓存下载的包,这样就每次都得重新下载,把目录改成可写可读即可。
sudochmod-R777/home/vagrant/.composer/cache/files/
另外,在虚拟机中也设置composer为国内镜像,不然下载速度慢的要死,执行:
composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com
OK,大功告成。