2010-09-10 63 views
2

有谁知道一个框架(用PHP编写)来更新基于PHP的软件吗?PHP的更新框架

我在想一个库,它可以协助检查在线更新,并提供生成,下载,验证和安装更​​新软件包的方法,甚至可以使用加密和公钥签名。

理想情况下使用非copyleft开源许可证(例如BSD或MIT许可证,无GPL)。

尽管源代码控制工具在理论上很好,但它们可能会使PHP应用程序的(初始)部署复杂化,因为它们不是基于PHP(限制可移植性)并且通常非常大。

回答

2

我现在开发了自己的解决方案,它提供了生成,验证和安装更​​新软件包的功能。

基本上,它将PHP的OpenSSL函数用于对称加密密钥的公钥加密(RSA),mcrypt用于对称加密(AES)和ZIP作为容器格式。这些构建块用于创建紧凑的更新包,并确保数据的完整性和真实性。

人们也可以使用openssl_pkcs7_sign()openssl_pkcs7_encrypt()及其对应的MIME兼容加密,但这些功能似乎使用7位编码,因此使档案相当大。

Web应用程序必须将其所有文件和独立于系统的数据放在单个应用程序目录中,以便升级该应用程序时可以将其替换。按照如下进行

更新:

解压缩ZIP压缩文件内容到一个临时位置

  • 执行更新前的脚本
  • 使用临时移动新的应用程序目录下的适当位置名称
  • 将旧的应用程序目录移动到另一个地方或重新命名
  • 将新的应用程序目录重命名为其预期的命名
  • 运行后,更新脚本
  • 如果出现问题,尝试回滚 - 当你是一个在所有目标系统的控制

版本/源控制系统如git的很不错但除此之外,我认为您不应该要求客户安装和操作您必须为其提供支持的第三方软件,而是提供软件更新的用户界面,以便与其他软件完美集成。

+0

有没有计划开源这个?我正在为我计划发布的图书馆寻找同样的事情。 – philoye 2011-04-01 05:59:39

+0

不,我很遗憾,我正在为一家公司编码,而这家公司不想公开这样做。因此,我在这里草绘了一些有趣的细节,以便其他人可以把它们加入并实施他们自己的版本。 – Archimedix 2011-04-01 09:36:36

1

那么使用源代码控制工具的软件如git来检查新的更新并加载最新的提交呢?

+0

这只是一个部分的解决方案。数据库必须在模式更改的情况下更新,如果内部格式发生更改,则必须更新文件等。 – jmz 2010-09-10 10:49:05

+0

是的,源代码控制工具将近完美,但我更喜欢小巧的纯PHP解决方案,以实现可移植性。数据库模式更新可能不是自动更新框架的一部分,除非它是具有数据库抽象层的通用PHP框架(但它可能适用于PDO)。 – Archimedix 2010-09-10 11:23:08

+0

@Archimedix,你不会创造出类似于源代码控制软件的东西,因为这正是你部分寻找的东西。 – 2010-09-10 11:38:23