方法 Assetic\AssetWriter::getCombinations() 在 symfony2 使用 capifony 部署时不存在异常

Posted

技术标签:

【中文标题】方法 Assetic\\AssetWriter::getCombinations() 在 symfony2 使用 capifony 部署时不存在异常【英文标题】:Method Assetic\AssetWriter::getCombinations() does not exist exception on symfony2 deploy using capifony方法 Assetic\AssetWriter::getCombinations() 在 symfony2 使用 capifony 部署时不存在异常 【发布时间】:2013-05-07 19:08:50 【问题描述】:

调用时我的部署失败:

cd /var/www/prod/releases/20130513164742 && php app/console assetic:dump --env=prod --no-debug

我的设置昨天运行良好,但今天我无法使用 cap deploy 命令部署它 我通过在我的 prod 环境中克隆 repo 并执行php app/console assetic:dump --env=prod --no-debug(在开发模式下)进行检查,它运行良好!

有什么想法吗?

 ** [out :: prod] executing "sh -c 'cd /var/www/prod/releases/20130513164742 && php app/console assetic:dump --env=prod --no-debug'"
 ** [out :: prod] PHP Deprecated:  getEntityManager is deprecated since Symfony 2.1. Use getManager instead in /var/www/prod/shared/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/Registry.php on line 71
 ** [out :: prod] Dumping all prod assets.
 ** [out :: prod] Debug mode is off.
 ** [out :: prod] 
 ** [out :: prod] 
 ** [out :: prod] 
 ** [out :: prod]                                                                 
 ** [out :: prod]   [ReflectionException]                                         
 ** [out :: prod]   Method Assetic\AssetWriter::getCombinations() does not exist  
 ** [out :: prod]                                                                 
 ** [out :: prod] 
 ** [out :: prod] 
 ** [out :: prod] assetic:dump [--watch] [--force] [--period="..."] [write_to]
 ** [out :: prod] 
 ** [out :: prod] 

编辑:

在我的 git clone 上更新供应商后,我收到此错误

www-data@Prod:~/prod/dev$ php app/console assetic:dump --env=prod --no-debug
PHP Catchable fatal error:  Argument 2 passed to Doctrine\Bundle\DoctrineBundle\ManagerConfigurator::__construct() must be an array, none given, called in /var/www/prod/dev/app/cache/prod/appProdProjectContainer.php on line 116 and defined in /var/www/prod/dev/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/ManagerConfigurator.php on line 35

【问题讨论】:

我遇到了同样的问题。你今天更新作曲家了吗? kriswallsmith/assetic 从 alpha4 更新到 beta1,github.com/kriswallsmith/assetic/issues/412 是的!既然它坏了!即使在开发环境中!查看我的编辑。 @Ascherer 如何查看我在开发环境中使用的哪个版本以及如何告诉我的作曲家坚持这个版本? 检查 composer.lock,搜索资产,应该看到版本。检查我的答案,告诉它要坚持哪个版本 【参考方案1】:

https://github.com/kriswallsmith/assetic/issues/412

添加"kriswallsmith/assetic": "v1.1.0-alpha4"

到您的 composer.json 文件,然后再次更新

当他们解决问题时,您需要更改此设置

编辑:

为了记录,现在移动到"symfony/symfony": "2.3.*" 可以,无需指定上述内容

【讨论】:

老兄,我非常感激! 1小时后我就疯了! :D【参考方案2】:

如果有人添加后仍有问题:

kriswallsmith/assetic": "v1.1.0-alpha4

您可能需要将symfony/assetic-bundle 的版本更改为2.3.*(我有2.1) 并再次更新:

php composer.phar 更新

【讨论】:

Composer 告诉我 ascetic-bundle v2.3.0 需要 kriswallsmith >= 1.1-beta1,这与 1.1.0-alpha4 的要求相冲突 这里相同,但一旦更改为 1.1.0-beta1,一切更新正常。

以上是关于方法 Assetic\AssetWriter::getCombinations() 在 symfony2 使用 capifony 部署时不存在异常的主要内容,如果未能解决你的问题,请参考以下文章

init()方法和构造方法的区别

GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

Python中静态方法和类方法的区别

类方法和实例方法

Java中的构造方法与普通方法的区别? 啥情况下用构造方法啥情况下用普通的方法

Python中静态方法和类方法的区别