我想要一个基于PHP的解决方案来备份远程服务器的数据库(只有数据而不是代码)并下载文件.我知道基于Shell的解决方案更适合做这样的事情(在本地系统上运行shell脚本并通过SSH连接到远程系统)但是要求有一个基于PHP的解决方案,其中知道URL和拥有数据库凭据就足够了非技术人员进行备份.PHP脚本可以上载到远程服务器并执行.
以下是我想要的功能: -
应该在所有服务器上工作,存在最大可能的限制(我知道一些限制,如safe_mode
启用exec()
,system()
功能禁用等).我想要一个非常通用的解决方案,保证可以在任何地方工作.
进程应进行密码验证(请求数据库凭据).
现在,我正在分解事物并从基础开始.以下是我对目前的事情的假设以及一些问题: -
我不知道,如果系统的功能,如exec
,system
等可以共享主机服务器或不能完全禁止.如果它们被禁用以便它们不能被覆盖,那么这里mysqldump
给出的基础解决方案将无法普遍适用.问题 -但是,如果系统功能只能在内部存在的文件上执行,那么解决方案是否可以安全运行?
safe_mode
safe_mode_exec_dir
我问了一个关于使用PHP执行此操作的安全风险的问题,并且了解在网站空间中永远不应该创建备份文件(我假设,如果是mysqldump
基于解决方案,则需要在下载之前首先创建备份文件).因此,解决方案不应该在那里创建备份文件(如果在其他位置创建,则没有问题).
问题 -但是,共享主机提供商会允许这样做吗?
我检查了各种通用用户贡献的PHP类,如phpmysqldump等,并没有找到mysqldump
使用系统命令进行备份的基于解决方案的用法.他们做类似的事情SHOW CREATE TABLE
来获取所有表创建,数据插入查询,然后下载这些东西而不实际将其保存为文件(因此没有安全风险).
问题 -我是否正确地得出结论,他们在没有mysqldump
像第一点的解决方案中给出的那样简单的情况下完成所有这些事情,因为这不是一个通用且安全的解决方案?
问题 -另外,我读到没有任何好的方法效果很好.我个人只使用这个phpmysqldump,当我尝试使用创建的备份恢复数据库时,它会给我mysql错误.转储文件中的查询与PhpMyAdmin的导出模块创建的查询略有不同.我还检查了一些其他免费用户贡献的PHP类.看起来它们中的大多数都不支持InnoDb支持,因此如果数据库中存在关键约束,则导出中不存在.
问题 - PhpMyAdmin本身的导出功能,如果单独出现,可能是我的解决方案,我想.有没有人知道像这样的稳定库吗?