【发布时间】:2016-11-19 18:57:33
【问题描述】:
我有一个旧的 Symfony 项目,这里是 composer.json:
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": {"": "src/"}
},
"require": {
"php": ">=5.5.9",
"symfony/symfony": "*",
"symfony/console": ">=2.2.3",
"doctrine/orm": "~2.2,>=2.2.3",
"doctrine/doctrine-bundle": "~1.2",
"twig/extensions": "~1.0",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~2.3",
"sensio/framework-extra-bundle": "~3.0",
"sensio/generator-bundle": "~2.3",
"incenteev/composer-parameter-handler": "~2.0",
"facebook/php-sdk-v4" : "4.0.*",
"symfony/finder": "^3.1",
"sonata-project/core-bundle": "^3.1",
"sonata-project/seo-bundle": "^2.0",
"sonata-project/admin-bundle": "^3.6"
},
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"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": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"config": {
"bin-dir": "bin"
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "2.4-dev"
}
} }
首先我会使用:
php composer.phar self-update
然后我使用以下命令进行升级:
php composer.phar update
结果如下:
Search for a package: symfony
Found 15 packages matching symfony
[0] symfony/symfony [1] rgies/symfony [2] php-tmdb/symfony [3] webforge/symfony [4] lexpress/symfony1 [5] symfony/symfony1 [6] sabaki-dev/symfony1 [7] behat/symfony2-extension [8] escapestudios/symfony2-coding-standard [9] smarkio/symfony1 [10] languara/symfony3 [11] m6web/symfony2-coding-standard [12] irongit/symfony2-stream-response [13] polishsymfonycommunity/symfony2-mocker-extension [14] symfony/console
Enter package # to add, or the complete package name if it is not listed: 0
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^3.1 for symfony/symfony
Search for a package: ./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install symfony/symfony v3.1.6
- Conclusion: don't install symfony/symfony v3.1.5
- Conclusion: don't install symfony/symfony v3.1.4
- Conclusion: don't install symfony/symfony v3.1.3
- Installation request for sensio/generator-bundle (locked at v2.5.3, required as ~2.3) -> satisfiable by sensio/generator-bundle[v2.5.3].
- Conclusion: don't install symfony/symfony v3.1.2
- Conclusion: don't install symfony/symfony v3.1.1
- don't install symfony/finder v3.1.6|don't install symfony/symfony v3.1.0
- don't install symfony/symfony v3.1.0|remove symfony/finder v3.1.6
- don't install symfony/symfony v3.1.0|don't install symfony/finder v3.1.6
- Installation request for symfony/symfony ^3.1 -> satisfiable by symfony/symfony[v3.1.0, v3.1.1, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6].
- Installation request for symfony/finder (locked at v3.1.6, required as ^3.1) -> satisfiable by symfony/finder[v3.1.6], symfony/symfony[v3.1.6].
Installation failed, reverting ./composer.json to its original content.
【问题讨论】:
-
开始一个新的 Symfony 项目以获得一个工作的 composer.json 然后使用 composer require 添加额外的包,比如 facebook sdk。用新的 composer.json 替换旧的 composer.json,重新安装,然后开始工作,尽管您将面临许多问题。除非你对 Symfony 有深入的了解,否则你最好分步升级:2.2 => 2.3 => 2.7 => 2.8 => 3.1 随着你的进展清除所有弃用通知。或者将你的旧应用一点一点复制到新应用中。
-
谢谢,但这些对我来说很难,因为我是新手,但我想了解更多,有没有办法解决我遇到的所有错误?
-
我想你可以雇人。否则,您基本上就不得不学习如何使用 Symfony 框架进行开发。
-
不,我说我只是想升级这些项目。
-
我想支持@Cerad 所说的话。 2.2 和 3.x 之间有很多变化,但你不会找到灵丹妙药。
标签: php symfony composer-php