2015-05-18 79 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)瞭解這個問題的原因和解決方案。 –