Symfony 4执行Composer命令时遇PHP类型提示参数默认值错误求助
这个错误看起来有点矛盾——你明明用的是PHP7.1.8,但报错信息却完全是PHP 5.x版本才会触发的问题,我来帮你拆解一下:
为什么会出现这个报错?
错误提示Default value for parameters with a class type hint can only be NULL,在PHP 5.x的规则里,参数类型提示仅支持类、接口、数组或callable,且带类型提示的参数默认值只能是NULL。而你代码里用了**标量类型string**加字符串默认值,这是PHP 7.0及以上才支持的特性。所以本质问题是:实际执行Composer脚本的PHP版本不是你以为的7.1.8,而是更低的5.x版本。
具体解决步骤:
第一步:确认CLI环境的PHP版本
打开终端执行以下命令,查看当前命令行使用的PHP版本:php -v很多时候系统会同时安装多个PHP版本,Web服务器用的是7.1,但CLI命令行默认调用的还是旧版本。
第二步:指定正确的PHP版本运行Composer
如果发现CLI的PHP版本确实是5.x,找到你PHP7.1的安装路径,用它来运行Composer命令:/usr/bin/php7.1 composer.phar update(路径根据你的实际安装情况调整,比如
/opt/php71/bin/php这类)第三步:检查composer.json的平台配置
打开项目的composer.json,查看是否有config.platform.php设置,确保它的值是7.1.8,而不是低于7.0的版本:"config": { "platform": { "php": "7.1.8" } }这个配置会告诉Composer按照指定的PHP版本安装依赖,避免拉取不兼容的组件版本。
第四步:验证依赖版本兼容性
检查symfony/console的版本,确保它与PHP7.1兼容。一般来说Symfony 3.x或4.x都适配PHP7.1,但如果是非常旧的2.x版本可能存在兼容问题——不过这一步的优先级低于前面的PHP版本排查。
按照这个思路排查,应该能快速解决问题。
内容的提问来源于stack exchange,提问作者Jiizen

