这个问题是关于一个我想做的项目的,尽管我找不到任何可能的事情...
让我们说我想用2个不同版本的PHP做一个项目(为简单起见,为什么不相关)。
项目结构如下:
app
bundles
FirstBundle
SecondBundle
web
index.php
app文件夹包含配置文件和Web静态文件。
index.php是用php 7.2编码的前端控制器
FirstBundle
是用php 7.2编码的,而棘手的部分是SecondBundle
是用php 5.6编码的,并且两个捆绑包都是应用程序正常工作所必需的。
如何使这样的应用程序运行?
我不只是想在服务器上但在同一应用程序中运行多个版本的php。
结构和所有内容都可以进行更改,我只需要了解如何运行具有多个PHP版本的应用程序即可。
更新
要添加一些上下文,我想拥有一个可以在其中部署任何php应用程序的门户。至少在向后兼容的情况下,此思想是受Java(或更精确地说是JVM)启发的。它将具有一些DXP功能,例如在liferay,Adobe或IBM中。这意味着我可以通过从后台上传项目的归档文件并从后台配置url端点,从而在门户中部署应用程序。我还应该能够像在CMS中一样创建一个新页面,然后将应用程序拖放到该页面中。
我们正在尝试解决的问题是避免停机并减少人员伤亡。只有一个Apache配置会提供该门户。该门户网站将能够管理数据库CRUD和数据库迁移。
让我们说该门户可以在http://example.com访问 我通过在后台将应用程序的存档上传到门户中,从而部署了一个新应用程序,并将端点配置为http://newapp.example.com或http://example.com/newapp
该门户仅用于内部目的,因此不会对外部安全构成威胁,并将用于低风险的应用程序(某些表格可供每个同事访问,某些静态网站用于内部交流...)
今天,我们在不同的VM上托管了约30种不同的应用程序,这些应用程序均使用SSO进行身份验证,但需要从LDAP检索其他一些用户数据,并且每个应用程序都缓存用户数据。我们的目标之一是为所有应用程序一次缓存用户数据,以便我们仅刷新一次这些数据,而不是每天刷新30次(我们目前正在这样做)。这只是一个例子,我们已经考虑过创建一个API来缓存用户数据,并使所有应用程序仅从API中检索数据,但这并不能解决我们正在尝试解决的所有问题。
要解决此问题,请在大约30个现有应用程序中用PHP7.x完成,大部分在5.6中完成。我们不会升级5.6中的版本,因为它只是在不增加任何价值的情况下进行成本计算。
最重要的是,用PHP7.3 +开发的未来应用程序应该可以在门户中部署,并且仍然可以在5.6中部署旧应用程序。
目前,我们只是想弄清楚如何实现此目标,如果我们将它构建在symfony或drupal上还没有反思,尽管我怀疑我们能否用symfony构建类似的东西,因为我什至不能弄清楚如何使用composer在一个项目中下载以管理多个版本的依赖项。
项目结构不是确定的,我们只是在草拟我们想要的内容以及它应该如何工作。当前的结构如下:
app -> Portal's config
applications
FirsApplication -> developped in PHP5.6
SecondApplication -> Developped in PHP 7.1
ThirdApplication -> Developped in PHP 7.2
FourthApplication -> Developped in PHP 7.3
FifthApplication -> Developped in PHP 8.0
index.php -> Portal's entry point