2010-09-10 89 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