安装的Composer模块OS是否独立?

问题描述 投票:0回答:2

我知道下面的场景远非现代最佳实践,但让我们试一试。

我们假设:

  1. 你有开发环境和服务器具有相同的PHP版本但不同的操作系统。
  2. 您希望/必须按原样将供应商文件夹部署到服务器。

可能的情况是:由于操作系统切换,某些软件包将无法工作,如果它们是从服务器上的composer json文件安装的,那么可以避免故障(即它们不是完全依赖于平台)?

我从这个question知道安装过程中设置的绝对路径可能是个问题。还有其他可能的问题吗?

php composer-php devops
2个回答
1
投票

概率非常高,因为根据环境设置,composer的工作方式会有所不同。

这个简单的例子就是https://getcomposer.org/doc/articles/scripts.md

它可以运行依赖于已安装组件的自定义逻辑,只有在主机操作系统有可用的东西时准备一些东西 - 这与composer.lock无关

核心问题是您要重用供应商文件夹。 Composer不是以这种方式工作的,这就是为什么在.gitignore文件中经常提到vendor的原因。作曲家每个环境的行为都不同,不应复制其结果。如果要在OS-es之间建立一致的行为,请使用Docker或vagrant来稳定应用程序及其环境。


0
投票

他们应该独立于操作系统,只要你将composer.lock提交到你的项目中。 composer.lock的意思是composer install独立于OS安装相同的软件包,而Composer本身不使用任何绝对路径(默认情况下)。实际上,Composer维护者discourage using it in production和许多问题已经被关闭,“Composer不是一个部署工具”作为一个原因。因此,通过设计,您应该能够在环境之间移动安装,并且在每个系统上,您将获得composer install安装的相同软件包。

唯一的问题可能来自scripts和/或plugins,这可能会做一些不可移植的事情,你需要在目标安装上运行它。


简而言之:是的,安装独立于操作系统(除非你做某事,否则会改变它)。

© www.soinside.com 2019 - 2024. All rights reserved.