这是一个人们常犯的错误,他们在包里定义了版本限制要求>=2.*
或>=1.1*
。
如果你认真思考过它的意思,你就会知道这么做没有任何意义。如果我们分析一下>=2.*
,你就会发现它包含两种规则:
>=2
表示包版本是 2.0.0 或以上。2.*
表示包版本在 2.0.0(包含)到 3.0.0 (不含)之间。正如你所看到的,这两条规则都要求包版本 >= 2.0.0,但是它无法确定是否包含 3.0.0 版本。它是应该匹配呢?因为你要求包版本>=2
。还是不应该匹配呢?因为你要求包版本是2.*
。
对于这种情况,Composer 会抛出一个错误,告诉你这是无效的。解决这种问题的简单做法是考虑清楚你的真正意图,然后使用这两条规则的其中之一。