【问题标题】:Update Framework for PHPPHP 更新框架
【发布时间】:2010-09-10 10:38:24
【问题描述】:

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

我正在考虑一个帮助在线检查更新并提供生成、下载、验证和安装更​​新包的方法的库,甚至可能带有加密和公钥签名。

最好使用非 Copyleft 开源许可证(例如 BSD 或 MIT 许可证,无 GPL)。

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

【问题讨论】:

    标签: php deployment frameworks auto-update


    【解决方案1】:

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

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

    也可以使用openssl_pkcs7_sign()openssl_pkcs7_encrypt() 以及它们的对应物进行符合MIME 的加密,但是这些函数似乎使用7 位编码,因此会使存档相当大。

    Web 应用程序必须将其所有文件和独立于系统的数据放在一个应用程序目录中,可以替换这些目录以升级应用程序。

    更新如下:

    将 ZIP 存档内容解压缩到临时位置

    • 执行更新前脚本
    • 使用临时名称将新的应用程序目录移动到适当的位置
    • 将旧应用程序目录移至其他位置或重命名
    • 将新的应用程序目录重命名为其预期名称
    • 运行更新后脚本
    • 如果出现任何问题,请尝试回滚 -

    当您可以控制所有目标系统时,版本/源代码控制系统(例如 git)很好,但我认为您不应该要求客户安装和操作您必须提供支持的第三方软件而是为软件更新提供一个用户界面,该界面可以与您的其他软件很好地集成。

    【讨论】:

    • 有开源这个的计划吗?我正在为我计划发布的库寻找同样的东西。
    • 不,我很遗憾,我正在为一家不想公开它的公司编写代码。因此,我在这里勾勒出一些有趣的细节,以便其他人可以接受并实施他们自己的版本。
    【解决方案2】:

    使用源代码控制工具(如 git)检查新更新并加载最新提交的软件怎么样?

    【讨论】:

    • 这只是部分解决方案。如果架构发生变化,则必须更新数据库,如果内部格式发生变化,则必须更新文件,等等。
    • 是的,源代码控制工具将接近完美,但出于可移植性的原因,我更喜欢紧凑的纯 PHP 解决方案。数据库模式更新可能不是自动更新框架的一部分,除非它是具有数据库抽象层的通用 PHP 框架(但它可能适用于 PDO)。
    • @Archimedix,你不会来创建类似源代码控制软件的东西,因为这是你部分寻找的东西。
    • 包括 git hooks / php 控制台以从 php 脚本管理 git,可能通过 cgi 来防止 php 超时。
    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多