【发布时间】:2018-12-27 04:46:48
【问题描述】:
我正在开发一个基于 PHP7 和 Laravel 的项目。不幸的是,依赖项和包版本存在问题。
我猜之前从事该项目的开发人员是通过调用来更新包的
composer update
在他的本地开发环境中。
因此,已经生成了一个新的 composer.lock 文件,并且所有内容都已推送到生产服务器 - 但是,尚未在生产服务器上调用 composer update 命令...
存在PHP版本不兼容等依赖问题。
这是一个非常大的项目,我现在不想在生产服务器上迁移到更高版本。
我目前正在准备一个开发环境,我关心的是保持所有包版本与生产中的版本的最大兼容性。
通过调用:
composer install
在本地环境中,我收到一系列与软件包版本不兼容有关的错误。
有没有办法根据生产服务器上当前安装的内容重新生成/恢复 composer.json 和 composer.lock?不幸的是,此时生产环境中的 composer.lock 并不能完全反映实际安装版本的当前状态。
什么是从生产服务器上的存储库本地重新创建克隆项目并保持所有包版本的完全兼容性、composer.json 和 composer.lock 的正确形式的安全且良好的方法?
提前感谢您的帮助!
【问题讨论】:
-
你不使用像 SVN 或 GIT 这样的源代码控制吗?否则不可能恢复到以前的版本。
-
我收到的项目只有生产版本代码。不幸的是,我无法访问上次提交的历史记录。它由以前的开发人员管理,他没有向我们转让任何东西。实际上,我正在基于 Gitlab 创建新的项目代码存储库。
-
你最好的办法是尝试根据生产 composer.lock 确定确切的版本,并在本地 composer.json 中严格指定它们(例如,如果有“pacakage/name”:“^ 1" 您将其设为 "package/name": "1.2.3" 以获得所需的确切工作版本)并再次运行 composer update。
标签: php laravel composer-php