昨天项目上线,本地开发环境和测试环境运行都没问题,到上线运行composer install --no-dev --optimize-autoloader
就报了错,原因是composer依赖包要求的版本是PHP 7.1.3, 而生产环境用的PHP版本是7.1.2,所以就报错了。
产生问题的原因: 由于本地开发用的PHP版本是7.1.3,所以在用composer update
安装依赖包的时候composer就直接按照我本地的php版本来安装,这样就导致一个人机器上运行好好的,换到别人机器上就不能运行了。
解决方案: 通常有三种
- 降低你本地的PHP版本,使你的版本小于线上的版本。
- 升级服务器的PHP版本。
- 在composer.json中添加指定平台的PHP版本, 重新运行
composer update
来更新composer.lock, platform指令就是让你可以模拟生产环境或者你指定的平台
此三人说的已经很清楚了
参考
https://getcomposer.org/doc/06-config.md#platform