如何自我更新PHP + MySQL CMS?

Sal*_*ake 20 php mysql self-updating content-management-system

我在PHP + MySQL上编写CMS.我希望它是可自我更新的(在管理面板中单击一下).什么是最佳做法?
如何比较当前版本的cms和更新版本(应用程序本身和数据库).它应该只下载zip存档,上传和覆盖文件吗?(但是如何处理不再使用的文件).如何检查更新是否正确下载?它还支持模块,我希望这些模块可以从cms的管理面板下载.
我应该如何更新MySQL表?

Bar*_*lom 10

  • 将代码保存在与配置和其他可变文件(上载的图像,缓存文件等)不同的位置
  • 保持模块与主代码分开.
  • 确保您的代码具有自行更改的文件系统权限(例如,使用SuPHP).

如果您这样做,最简单的方法是完全下载新版本(无增量补丁),并将其解压缩到与包含当前版本的目录相邻的目录.因为代码目录中不会有变量文件,所以您可以删除或重命名旧文件,并重命名新文件以替换它.

您可以将版本号保存在代码中的全局常量中.

至于MySQL,除了为每个更改数据库布局的版本制作升级脚本之外别无他法.即使是更改表定义的自动解决方案也无法知道如何更新现有数据.


Les*_*Les 8

稍微更实验性的解决方案可能是使用像phpsvnclient库这样的东西.

功能:

  • 列出给定SVN存储库目录中的所有文件
  • 检索文件的给定修订版
  • 检索两个修订版之间在存储库或给定文件中所做更改的日志
  • 获取存储库最新版本

这样,您可以查看是否有新文件,已删除文件或更新文件,只能更改本地应用程序中的文件.

我认为这将有点难以实现,但好处可能是更容易,更快速地向CMS添加更新.

  • 我尝试了这种方法,虽然听起来这是一个很好的方式,这将是文件权限方面的一种偏见方式.您必须希望所有文件都可以被覆盖,并且如果用户没有对文件进行编辑.(如果他们确实你的svn更新将非常错误.)如果你要创建一个公共可用的CMS,我将不会使用这种方法,因为你的用户将依赖它,所以你应该选择一个不依赖于它的系统文件权限. (2认同)