我正在开发一个基于PHP7和Laravel的项目。不幸的是,依赖项和软件包版本存在问题。
我猜想以前从事该项目的开发人员通过调用
开始更新软件包composer update
在他的本地开发环境中。
因此,已生成一个新的composer.lock文件,所有内容均已推送到生产服务器-但是,尚未在生产中调用composer update命令...
PHP版本不兼容以及相关性中的其他错误。
这是一个非常大的项目,我现在不想迁移到生产服务器上的更高版本。
我目前正在准备一个开发环境,我关心保持所有软件包版本与生产版本的最大兼容性。
通过致电:
composer install
在本地环境中,我收到一系列与软件包版本不兼容有关的错误。
是否有任何方法可以根据生产服务器上当前安装的内容来重新生成/还原composer.json和composer.lock?不幸的是,目前,生产环境中的composer.lock不能完全反映实际安装版本的当前状态。
从生产服务器上的存储库本地重新创建克隆的项目,并保持所有软件包版本(正确的composer.json和composer.lock格式)的完全兼容性的一种安全又好方法是什么?
在此先感谢您的帮助!
答案 0 :(得分:0)
否,无法基于composer.json
中已经安装的内容来重新创建/vendor
文件。您可以寻找/vendor/composer/installed.json
文件作为所有软件包安装版本的参考。
在这种情况下,您需要做的是:
composer.json
中伪造它。composer.lock
文件没有用。从您的作品中获取/vendor/composer/installed.json
文件。删除您的/vendor
文件夹。composer install
。写下所有有问题的软件包,并检查Composer提供的解决方案。composer.json
中的版本降级,以查找由于Composer提供的解决方案而出现问题的软件包。确保自己检查一下这些软件包-开发人员在维护软件包的依赖关系和版本控制方面并不总是很严格。您始终可以只从生产版本的/vendor/composer/installed.json
中获取软件包版本,然后将该特定版本放入composer.json
中。 composer.lock
文件为止。确保您的composer.json
和composer.lock
文件已被VCS跟踪并修正了这些更改。答案 1 :(得分:-1)
运行 composer update
和 composer install
您可以使用此代码运行
composer install --ignore-platform-reqs
或更新
composer update --ignore-platform-reqs