phpによるgit pull自動配置
1283 ワード
gitをインストールして、公開鍵を生成して、公開鍵をプラスしてすべてチュートリアルがあって、注意しなければならないのは以下のいくつかの方面です
phpはwwwユーザーで実行され、git pullを実行するには権限が必要です.
1、vim/etc/sudoers
root行を追加
www localhost=(ALL)NOPASWD:/usr/bin/git(gitインストール後ディレクトリはwhich gitで表示)
2、phpがexec shellを実行することを許可する_exec
3、ディレクトリ権限の変更
4、.gitは権限を変更して書くことができて、私は直接777に変更しました
5、.git/config httpsアドレスをsshに変更
phpはwwwユーザーで実行され、git pullを実行するには権限が必要です.
1、vim/etc/sudoers
root行を追加
www localhost=(ALL)NOPASWD:/usr/bin/git(gitインストール後ディレクトリはwhich gitで表示)
2、phpがexec shellを実行することを許可する_exec
3、ディレクトリ権限の変更
4、.gitは権限を変更して書くことができて、私は直接777に変更しました
5、.git/config httpsアドレスをsshに変更
<?
header("Content-type: text/html; charset=utf-8");
$js = json_decode($_REQUEST["hook"]); // json
if ($js->password != "password") {
die("ERROR!"); //
}
$fp = fopen("./log.txt", 'a');
$lastcommit = $js->push_data->commits[count($js->push_data->commits) - 1]; // commit
if (strstr($lastcommit->message, "release")) // : commit "release" 。
{
exec("cd ./"); //
exec("git pull origin master"); // git , ssh
fwrite($fp, "※" . date('Y-m-d H:i:s') . "\t" . $lastcommit->message . "\t" . $lastcommit->author->name . "
"); //
} else {
fwrite($fp, date('Y-m-d H:i:s') . "\t" . $lastcommit->message . "\t" . $lastcommit->author->name . "
");
}