7660


PHPで、system()などが利用できないレンタルサーバーでGithubのwebhookを利用してGithubの特定リポジトリとサーバー上の特定ディレクトリの内容を同期したいのですが、  
どの様なコードを書けばいいのでしょうか。


CC BY-SA 3.0
2015-03-09T08:54:01.667
7651
2015-03-09T12:37:19.530
2015-03-09T09:23:12.633
question
php github
PHPでGithubとwebhookを利用して同期したい


`PHP`の`ZIPモジュール`が利用できる前提ですが、`github`からアーカイブをダウンロードして展開するだけです。

[code]

    <?php
    
    function rmdir_rec($dir)
    {
        foreach (array_diff(scandir($dir), array('.', '..')) as $file) {
            $path = $dir . '/' . $file;
            if (is_dir($path)) {
                rmdir_rec($path);
            } else {
                unlink($path);
            }
        }
        rmdir($dir);
    }
    
    function get_repo($zip_url, $dir)
    {
        $temp_zip = tempnam(sys_get_temp_dir(), '');
        file_put_contents($temp_zip, fopen($zip_url, 'r'));
    
        $zip = new ZipArchive;
        $res = $zip->open($temp_zip);
    
        if ($res === TRUE) {
            $ext_tmp = sys_get_temp_dir();
            var_dump($zip->extractTo($ext_tmp));
            if (file_exists($dir)) {
                rmdir_rec($dir);
            }
            rename($ext_tmp . '/' . $zip->getNameIndex(0), $dir);
            $zip->close();
        }
    
        unlink($temp_zip);
    }
    
    get_repo("https://github.com/mruby/mruby/archive/master.zip", "repo");
    
[/code]


CC BY-SA 3.0
2015-03-09T12:37:19.530
7660
2015-03-09T12:37:19.530
3639
7651
answer