ホームページ  >  に質問  >  本文

开源中国Git PUSH钩子部署PHP程序

我的代码托管在开源中国得Git库里,想使用Git钩子来实现程序的部署,写了一个程序接受钩子的post的数据,但是不能实现程序的部署。。代码如下:

public function index(){
        $logger = new KLogger(LOG_PATH.'KLogger');

        $web_root_dir = APP_PATH;  // /var/www/site

        if(IS_POST){
            $payload = $_POST;
            $payload = json_decode($payload['hook']);
            $logger->info('data from git post...', $payload); 

            // if (!empty($payload['password'])){
                $command = "cd {$web_root_dir} && git pull";
                $logger->info('enter if .....');
                $result = exec($command);
                $logger->info('command execute result...'.$result); 

            // }
        }

    }

在程序里记录了日志,能接收到post数据,但是命令执行不成功,下面是log的内容:

[2015-05-05 2:07:34.114928] [INFO] data from git post...
    password: '123456'
    push_data: stdClass::__set_state(array(
         'before' => '7a563d4498371a8572a88ff22fb726ac7f8dd467',
         'after' => 'f24b208ddb520b1349fca6a5a0295db516b3982b',
         'ref' => 'refs/heads/master',
         'user_id' => 120469,
         'user_name' => '',
         'repository' => stdClass::__set_state(array(
             'name' => '',
             'url' => '',
             'description' => '',
             'homepage' => '',
        )),
         'commits' => array(
            0 => stdClass::__set_state(array(
                 'id' => 'f24b208ddb520b1349fca6a5a0295db516b3982b',
                 'message' => 'a',
                 'timestamp' => '2015-05-05T02:07:35+08:00',
                 'url' => 'http://git.oschina.net/commit/f24b208ddb520b1349fca6a5a0295db516b3982b',
                 'author' => stdClass::__set_state(array(
                     'name' => '',
                     'email' => '',
                )),
            )),
        ),
         'total_commits_count' => 1,
    ))
[2015-05-05 2:07:34.115142] [INFO] enter if .....
[2015-05-05 2:07:35.482580] [INFO] command execute result...
阿神阿神2697日前749

全員に返信(3)返信します

  • 漂亮男人

    漂亮男人2017-05-02 09:21:58

    http://blog.skyx.in/archives/158/

    権限の問題かもしれません

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-02 09:21:58

    私は通常、フックを使用しません。このスクリプトをデプロイする必要がある場合はどこでも実行します。 リーリー

    もちろん、プログラムがコード更新のために他の操作も行う必要がある場合、これは役に立ちません。

    返事
    0
  • ringa_lee

    ringa_lee2017-05-02 09:21:58

    私が書いた簡単なスクリプトを投稿します。いくつかの情報を設定すると、対象の機能を実現できるだけでなく、その情報を簡単にログに記録することができます。

    リーリー

    返事
    0
  • キャンセル返事