在我的composer.json
我有
"require": {
. . .
"unisharp/laravel-filemanager": "~1.8"
}
目前,最新版本是v1.8.2.2,运行composer update
命令后,我将其安装在我的localhost项目中(一切正常)。
我已经将(git push origin master
)从本地主机推送到Bitbucket上的远程存储库,并通过SSH连接到Web服务器并从该远程存储库克隆(git clone ...
)它。
现在,当我运行composer update
(在 Web 服务器上)时 - 它安装了 v1.8.0,它有一些错误。之后,当我再次尝试运行composer update
时 - 我得到:
Nothing to install or update
。但它仍然是 v1.8.0(不像 localhost 上的 v1.8.2.2)。
因此,我的本地主机和实时服务器上具有相同的 composer.json 项目,但由于某种原因,localhost 具有最新版本的包,而实时版本具有带有错误的旧版本,composer update
不会更新它。
你知道为什么会发生这种情况,我该如何解决吗?
你应该在本地运行composer update
。这将使用已安装的所有软件包的版本更新composer.lock
。应将composer.lock
文件提交到版本控制。
在服务器上,更新文件后,应运行composer install
,以便 Composer 可以更新其依赖项以匹配composer.lock
文件中指定的依赖项。
我只花了两个小时来调试这个。 事实证明,问题是 composer.json 文件中有一个"版本"标签。
当那里有版本标记时,该版本的优先级将高于您应用的任何 git 标记版本。