Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动PHP脚本更新程序指南_Php_Apache_Upgrade - Fatal编程技术网

自动PHP脚本更新程序指南

自动PHP脚本更新程序指南,php,apache,upgrade,Php,Apache,Upgrade,我有一套定制CMS的文件,现在客户群实际上正在增长,我需要一个自动更新程序,也许每天晚上都可以通过cron作业来完成 基本上,它需要替换/admin下的所有文件(包括.php和.js文件,不需要.css文件,因为它始终引用主域) 我想知道最好的方法是什么——我的文件不在任何类型的公共github存储库中,所以我可能只需要手动压缩并上传,或者只需在服务器文件管理器上进行压缩就可以了 我只需要一些关于如何进行这方面的指导,以减少安全问题等。这是最好的方法吗?下载压缩文件,然后解压?解压文件时,是否会

我有一套定制CMS的文件,现在客户群实际上正在增长,我需要一个自动更新程序,也许每天晚上都可以通过cron作业来完成

基本上,它需要替换/admin下的所有文件(包括.php和.js文件,不需要.css文件,因为它始终引用主域)

我想知道最好的方法是什么——我的文件不在任何类型的公共github存储库中,所以我可能只需要手动压缩并上传,或者只需在服务器文件管理器上进行压缩就可以了

我只需要一些关于如何进行这方面的指导,以减少安全问题等。这是最好的方法吗?下载压缩文件,然后解压?解压文件时,是否会毫无疑问自动覆盖现有文件

我不想为此使用命令行实用程序,因为有些帐户位于我的服务器之外,因此我无法通过SSH或类似的方式复制任何文件


谢谢你的帮助

使用像git这样的vcs,您可以创建一个cron,它可以像git一样每晚调用cvs

git pull

不要求存储库是公共的,但服务器需要访问。

您可以尝试运行一个cron php脚本,该脚本在客户端构建的目标目录中循环,创建其内容的散列,然后将其与主副本进行比较:

$files = array();
if ($handle = opendir('/path/to/files')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            $file_hash = md5(file_get_contents('/path/to/files'.$entry));
            compare_and_get_contents('/path/to/files'.$entry, $file_hash);
        }
    }
    closedir($handle);
}
compare_和_get_contents()函数的外观如下:

function compare_and_get_contents($file_path,$hash){
    $get_code = file_get_content('http://mysite.com/compare?path='.urlencode($file_path).'&hash='.$hash);
    if (strlen($get_code)>0){
        file_put_contents($file_path,$get_code);
    }
}

你只需要写一页(http://mysite.com/compare)将客户端版本的哈希值与父版本的哈希值进行比较,如果不匹配,则打印父版本的代码。如果有问题,您可能还希望在传输数据时对其进行加密。显然,这段代码需要一些修改才能工作,并且存在一些潜在的安全性和权限问题,但它可能会完成任务,并且比将整个内容作为zip文件传递要节省带宽。

好主意-但是要让服务器访问,我需要一个更大的GIT帐户。我希望能有一个更简单的解决方案,使用PHP文件下载程序,就像Wordpress那样。@jeffkee只是在你自己的服务器上托管git存储库?不知道,你说的“git帐户”是什么意思。您只需要一个系统,该系统具有可选择大小的硬盘驱动器和已安装的SSH服务器。这就是git所需要的。Doh!当然我完全认为它是一个“github”帐户,而不是git。我是个白痴。是的,好主意。。我想我只需要在我的专用服务器上安装git之类的东西。使用SVN怎么样?同样的事情?不喜欢SVN;)但类似的事情也有可能发生。设置应该是类似的:一个位于“中间”的存储库(在SVN中可能是“那个”)、从您的开发系统推送/提交到的存储库、从您的拉/更新服务器(通过cron)到的存储库。我最后做了类似的事情——从主服务器获取文件,然后将zip文件放入,然后解压缩!