我一直在本地计算机上使用 Symfony 2.1 开发一个项目。我已将其上传到我的服务器,但是当我尝试使用 Composer 安装供应商捆绑包时,我遇到了很多依赖项错误。据推测,这与刚刚发布的 Symfony 最新版本有关,而我的
composer.json
文件未指定确切的版本号。
有什么方法可以快速显示本地计算机上所有内容的版本号吗?
这是我的composer.json 文件(直到几天前还运行良好):
{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"sonata-project/admin-bundle": "*",
"sonata-project/cache-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master",
"stof/doctrine-extensions-bundle": "1.1.x-dev",
"sonata-project/user-bundle": "dev-master",
"sonata-project/easy-extends-bundle": "dev-master",
"friendsofsymfony/user-bundle": "2.0.x-dev",
"friendsofsymfony/jsrouting-bundle": "*",
"liip/imagine-bundle": "*",
"simplethings/form-extra-bundle": "dev-master",
"antimattr/google-bundle": "dev-master",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"genemu/form-bundle": "2.1.*",
"behat/behat": "2.4.*@stable",
"behat/mink": "1.4.*@stable",
"behat/symfony2-extension": "*@stable",
"behat/mink-extension": "*@stable",
"behat/mink-selenium2-driver": "*@stable",
"behat/mink-browserkit-driver": "*",
"liip/functional-test-bundle": "dev-master"
},
"scripts": {
"post-install-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"minimum-stability": "dev",
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web"
},
"config": {
"bin-dir": "bin/"
}
}
您可以运行
composer show -i
(--installed
的缩写)。
在最新版本中只需使用
composer show
。
-i
选项已被弃用。
您还可以使用
global
安装composer:composer global show
列出全局安装的 Composer 软件包:
composer global show -i
列出已安装的依赖项:
composer show -i
composer show -i -t
-i
--installed
的缩写。
-t
--tree
的缩写。
如果您只想检查一个版本,您可以这样做
composer show -- twig/twig
请注意,现在默认情况下仅显示已安装的软件包,并且已弃用已安装的选项。
此命令的行为已被修改,因此您不必传递
-i
选项:
[10:19:05] coil@coil:~/workspace/api$ composer show -i
You are using the deprecated option "installed".
Only installed packages are shown by default now.
The --all option can be used to show all packages.
Ivan上面的回答很好:
composer global show -i
添加信息:如果您收到类似于以下内容的消息:
Composer could not find a composer.json file in ~/.composer
...您可能还没有安装软件包。如果是这样,您可以忽略消息的下一部分,其中包含:
... please create a composer.json file ...
...一旦安装了软件包,该消息就会消失。
在composer-runtime-api 2.0+ 中,有一个新的
InstalledVersions
类,其中包含一些静态方法,可以以编程方式查看事物。
例如:
// To list all packages (`string[]`)
\Composer\InstalledVersions::getInstalledPackages();
// To list every details of every packages
\Composer\InstalledVersions::getAllRawData();
更多信息:https://getcomposer.org/doc/07-runtime.md#installed-versions
如果你想安装Symfony2.2,你可以在你的
composer.json
Symfony博客上看到完整的变化。
只需根据该文件更新您的文件,然后运行
composer update
即可。这将在您的项目上安装所有新的依赖项和 Symfony2.2。
如果您不想更新到 Symfony2.2,但有依赖错误,您应该发布这些错误,以便我们可以进一步帮助您。
有没有办法通过 $event->getComposer()->getRepositoryManager()->getAllPackages() 来获取它
composer show -i
已弃用。你只能使用composer show