PHP更新框架
有人知道用PHP编写的框架来更新基于PHP的软件吗 我正在考虑一个库,它可以帮助在线检查更新,并提供生成、下载、验证和安装更新包的方法,甚至可以使用加密和公钥签名 理想情况下,使用非copyleft开源许可证(例如BSD或MIT许可证,无GPL)PHP更新框架,php,deployment,frameworks,auto-update,Php,Deployment,Frameworks,Auto Update,有人知道用PHP编写的框架来更新基于PHP的软件吗 我正在考虑一个库,它可以帮助在线检查更新,并提供生成、下载、验证和安装更新包的方法,甚至可以使用加密和公钥签名 理想情况下,使用非copyleft开源许可证(例如BSD或MIT许可证,无GPL) 虽然源代码管理工具在理论上很好,但它们会使PHP应用程序的(初始)部署复杂化,因为它们不是基于PHP的(限制了可移植性),而且通常相当大。使用源代码管理工具的软件怎么样,像git一样检查新的更新并加载最新的提交?我现在已经开发了自己的解决方案,它提供了
虽然源代码管理工具在理论上很好,但它们会使PHP应用程序的(初始)部署复杂化,因为它们不是基于PHP的(限制了可移植性),而且通常相当大。使用源代码管理工具的软件怎么样,像git一样检查新的更新并加载最新的提交?我现在已经开发了自己的解决方案,它提供了生成、验证和安装更新包的功能 基本上,它使用PHP的OpenSSL函数进行对称加密密钥的公钥加密(RSA)、对称加密密钥的mcrypt(AES)和ZIP作为容器格式。这些构建块用于创建紧凑的更新包,并确保数据的完整性和真实性 也可以使用和及其对应项进行MIME兼容的加密,但是这些函数似乎使用7位编码,因此使存档相当大 web应用程序必须将其所有文件和独立于系统的数据放在单个应用程序目录中,可以替换这些目录以升级应用程序 更新操作如下所示: 将ZIP存档内容提取到临时位置
- 执行更新前脚本
- 使用临时名称将新的应用程序目录移动到正确的位置
- 将旧的应用程序目录移动到另一个位置或重命名它
- 将新应用程序目录重命名为其预期名称
- 运行更新后脚本
- 如果出现任何问题,请尝试回滚-
当您控制所有目标系统时,版本/源代码控制系统(如git)是不错的选择,但除此之外,我认为您不应该要求客户安装和操作您也必须提供支持的第三方软件,而是为软件更新提供一个与软件的其余部分。这只是部分解决方案。数据库必须更新,以防模式发生变化,文件必须更新,如果内部格式发生变化,等等。是的,源代码管理工具将近乎完美,但出于可移植性的原因,我更喜欢紧凑的纯PHP解决方案。数据库模式更新可能不是自动更新框架的一部分,除非它是一个带有数据库抽象层的通用PHP框架(但对于PDO来说可能是可行的)。@Archimedix,您不会创建类似于源代码控制软件的东西,因为这正是您部分想要的。包括git钩子/php控制台,从php脚本管理git,可能通过cgi来防止php超时。有没有计划对此进行开源?我正在为一个我计划发布的库寻找同样的东西。不,我很遗憾,我是为一家不想公开这一点的公司编码的。因此,我在这里勾勒出一些有趣的细节,以便其他人可以使用它并实现他们自己的版本。