作曲家更新后Symfony2崩溃

时间:2015-06-11 08:49:31

标签: php symfony composer-php

我遇到了一个问题,因为我在Symfony2安装上更新了我的供应商。

这是我的composer.json的内容:

{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
    "psr-0": { "": "src/" }
},
"require": {
    "php": ">=5.4",
    "symfony/symfony": ">=2.4",
    "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",
    "white-october/pagerfanta-bundle": "dev-master",
    "friendsofsymfony/rest-bundle": "1.3.*",
    "friendsofsymfony/comment-bundle": "2.0.*@dev",
    "friendsofsymfony/message-bundle": "1.2.*@dev",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "nelmio/api-doc-bundle": "@stable",
     "ornicar/akismet-bundle": "dev-master",
    "friendsofsymfony/jsrouting-bundle": "2.0.*@dev",
    "appventus/alertify-bundle": "dev-master",
  "friendsofsymfony/oauth-server-bundle": "dev-master",
  "willdurand/propel-typehintable-behavior": "*",
  "hwi/oauth-bundle": "0.4.*@dev",
  "nomaya/social-bundle": "dev-master"

}
}

php composer.phar update之后,当我尝试/app.php时,我遇到以下错误:

Deprecated: The Symfony\Component\Security\Core\SecurityContextInterface interface is deprecated since version 2.6 and will be removed in 3.0. in /var/www/html/xxx/app/cache/prod/classes.php on line 3035
Deprecated: The Symfony\Component\Security\Core\SecurityContext class is deprecated since version 2.6 and will be removed in 3.0. Use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage or Symfony\Component\Security\Core\Authorization\AuthorizationChecker instead. in /var/www/html/xxx/app/cache/prod/classes.php on line 3047
Fatal error: Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message 'Catchable 
Fatal Error: Argument 1 passed to Symfony\Component\Routing\Router::Symfony\Component\Routing\{closure}() must be an instance of Symfony\Component\Config\ConfigCacheInterface, instance of Symfony\Component\Config\ConfigCache given' in /var/www/html/xxx/app/cache/prod/classes.php:1302 

Stack trace: 
#0 /var/www/html/xxx/app/cache/prod/classes.php(1302): Symfony\Component\Debug\ErrorHandler->handleError(4096, 'Argument 1 pass...', '/var/www/html/p...', 1302, Array) 
#1 [internal function]: Symfony\Component\Routing\Router->Symfony\Component\Routing\{closure}(Object(Symfony\Component\Config\ConfigCache)) 
#2 /var/www/html/xxx/vendor/symfony/symfony/src/Symfony/Component/Config/ConfigCacheFactory.php(46): call_user_func(Object(Closure), Object(Symfony\Component\Config\ConfigCache)) 
#3 /var/www/html/xxx/app/cache/prod/classes.php(1313): Symfony\Component\Config\ConfigCacheFactory->cache('/var/ww in /var/www/html/xxx/app/cache/prod/classes.php on line 5261

当我去/app_dev.php时我有这个:

Whoops, looks like something went wrong.

 1/1
 FatalErrorException in ConfigDataCollector.php line 276:
 Error: Undefined class constant 'END_OF_MAINTENANCE'

我的PHP版本在Apache / 2.2.15上是5.6.9。

有人有线索吗?

由于 克努特

5 个答案:

答案 0 :(得分:9)

我通过重新生成bootstrap.php.cache(通过运行composer update / composer install,或直接通过脚本)解决了这个问题。

答案 1 :(得分:2)

你可以试试这个:

php composer.phar self-update

php composer.phar update

答案 2 :(得分:1)

问题是我的不同供应商之间不兼容,我已将我的composer.json更新为:

{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
    "psr-0": { "": "src/" }
},
"require": {
    "php": ">=5.4",
    "symfony/symfony": ">=2.4",
    "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",
    "white-october/pagerfanta-bundle": "dev-master",
    "friendsofsymfony/rest-bundle": "1.3.*",
    "friendsofsymfony/comment-bundle": "2.0.*@dev",
    "friendsofsymfony/message-bundle": "1.2.*@dev",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "nelmio/api-doc-bundle": "@stable",
     "ornicar/akismet-bundle": "dev-master",
    "friendsofsymfony/jsrouting-bundle": "2.0.*@dev",
    "appventus/alertify-bundle": "dev-master",
  "friendsofsymfony/oauth-server-bundle": "dev-master",
  "willdurand/propel-typehintable-behavior": "*",
  "hwi/oauth-bundle": "0.4.*@dev",
  "nomaya/social-bundle": "dev-master"

}
}

所有作品......

感谢。

答案 3 :(得分:0)

尝试:

rm /var/www/html/xxx/app/cache/prod/* -rf

答案 4 :(得分:0)

对于它的价值,我在升级symfony(从2.6升级到2.8)后遇到了这个问题,这是在一个流浪客人身上运行。

问题确实存在于app/bootstrap.php.cache文件中。在我们的案例中,我们rsync没有排除它,这意味着如果主持人还没有更新composer问题会再次发生。它是通过从我们的Vagrantfile中的bootstrap.php.cache中排除rsync来解决的:

config.vm.synced_folder "host/path", "guest/path", type: "rsync", rsync__exclude: [ 'bootstrap.php.cache'],

此文件由composer生成,因此在来宾上运行sudo composer installsudo composer update会重新生成它。

希望这能节省一些时间。