2015-05-18 48 views
0

所以我正要部署在一些个月以来首次一些变化,我得到这个错误回:部署laravel 5 AWS EB CLI:UnexpectedValueException - 无效的版本字符串

[UnexpectedValueException]             
    Could not parse version constraint ^1.2.2: Invalid version string "^1.2.2" 

一些挖后,我发现在我的composer.lock文件中的行:

{ 
    "_readme": [ 
     ... 
    ], 
    "hash": "NotTellingYou", 
    "packages": [ 
     { 
     ... 
     }, 
     .... 
     "require": { 
       "nikic/php-parser": "^1.2.2", 
       "php": ">=5.3.3", 
       "symfony/console": "~2.1", 
       "symfony/filesystem": "~2.1", 
       "symfony/finder": "~2.1" 
      }, 

但ehhh ......如何使字符串“正确”的呢?我知道最新版本是1.3,但我可以改变它吗?运行composer update时不应该是自动的吗?

回答

0

变化 “nikic/PHP解析器”: “^ 1.2.2” 为 “nikic/PHP解析器”: “1 *”,

+0

工作就像一个魅力。我手动将主要composer.lock中包含“^”的每个实例重新编写为“x。*”,然后再次运行。谢谢! – MartinJH

+0

这是不一样的版本。原本想使用AT LEAST 1.2.2版,并允许兼容更新。您的替换允许每种版本的1.x类型,而不检查1.1或1.0是否具有软件所需的所有功能。现在这不是问题,但是一旦安装了需要较低版本的PHP解析器的第三个包,它就会成为问题。至少你可以使用正确的替换:'〜1.2,> = 1.2.2'。 – Sven

+0

啊,好吧。下次会这样做。我认为最新版本会一直向后工作,只要它不是一个重大变化,例如1.2 - > 2.0 – MartinJH

1

更新作曲家版本所使用。使用^操作的功能已在2014年12月增加了,所以大家现在应该

composer self-update 

已经得到了作曲家的更新副本,这是为了防止不兼容问题的关键。请注意,Composer仍在开发中,并且有一些Alpha版本。使用它意味着也定期更新它。

+0

啊,我想这意味着AWS正在使用过时的版本。 AWS在从git推送我的应用程序时运行composer更新。如果他们有一个旧版本,它是有道理的,他们支持与新的语法错误(或称为语义?)我已经运行了作曲家自更新3次,然后作曲家更新,所以我敢肯定我是至今。 – MartinJH

+0

只是想说我忘记了在AWS上更新我的实例环境。更新之后,它也具有最新版本的作曲家,而且我不必再进行更改。 – MartinJH

+1

有关更多详细信息,请参阅AWS PHP开发博客上的[减少Elastic Beanstalk上的Composer问题](http://blogs.aws.amazon.com/php/post/Tx2M04LCN1UEE0E/Reduce-Composer-Issues-on-Elastic-Beanstalk)了解这个问题的原因和解决方案。 –