Composer安装失败:composer.json内联别名语法错误问题排查
解决Composer别名配置错误:Invalid version string "xsd2php-dev"
我来帮你搞定这个Composer安装失败的问题!先一步步拆解错误原因和修复方案:
错误根源分析
你遇到的错误提示已经说得很明确:
[UnexpectedValueException] Invalid version string "xsd2php-dev" in "xsd2php-dev as 0.18.0", the alias source must be an exact version, if it is a branch name you should prefix it with dev-
核心问题是Composer对分支别名的格式有强制要求:如果别名的源是仓库分支名称,必须以dev-作为前缀。你写的xsd2php-dev是目标仓库的分支名,但缺少了dev-前缀,导致Composer无法识别它是分支版本。
原配置意图解读
你的这条配置"jms/serializer": "xsd2php-dev as 0.18.0"的思路完全正确:
- 想要使用
repositories里配置的goetas/serializer仓库的xsd2php-dev分支代码 - 同时把这个分支版本别名为
0.18.0,让项目的其他依赖认为它是jms/serializer的正式0.18.0版本
修复步骤
只需要给分支名加上dev-前缀,修改这条配置为:
"jms/serializer": "dev-xsd2php-dev as 0.18.0"
修改后的完整composer.json
{ "require": { "jsanc623/phpbenchtime": "dev-master", "gte451f/phalcon-json-api-package": "dev-master", "soundasleep/html2text": "~0.2", "phpmailer/phpmailer": "~5.2", "php": ">=5.2.0", "ext-curl": "*", "jms/serializer": "dev-xsd2php-dev as 0.18.0", "robmorgan/phinx": "^0.5.3", "aws/aws-sdk-php": "^3.19" }, "require-dev": { "codeception/codeception": "*", "flow/jsonpath": "dev-master", "goetas/xsd2php": "2.*@dev", "goetas/xsd-reader": "2.*@dev" }, "repositories": [{ "type": "vcs", "url": "https://github.com/goetas/serializer.git" }] }
验证修复
修改完成后,重新执行composer install或者composer update jms/serializer,应该就能正常完成安装流程了。
内容的提问来源于stack exchange,提问作者Matt Krell
相关产品推荐
相关产品推荐

