4

これをまだ理解できていません..いくつかの答えを見てきましたが、どれも役に立ちません。

Github Webhooks を使用して、github がサーバー上の URL にヒットし、ヒットするとすぐにサーバーが新しくコミットされたアイテムをプルダウンするようにしようとしています。次のようなphpスクリプトがあります。

<?php `git pull git@github.com:my-user/myrepo.git`; ?>

ただし、ヒット時のスクリプトはユーザーとして実行されるapacheため、試しました:

chown -R apache:apache .

そして、まだ許可拒否エラーがあります。

そこで、sudoers ファイルを編集して、以下を変更してみました。

Host_Alias      LOCAL=127.0.0.1
apache          LOCAL=NOPASSWD: /var/www/html/git-hook.php

それでもうまくいきません。

これはどのように達成できますか?私が実行した場合:

 sudo php git-hook.php

問題なく動作するので、php ファイルのコードに問題はありません。それを自動化してほしいだけです。

何か案は?

編集:

私も言い忘れました。フォルダー/home/apache/.sshを作成し、gitプルオーバーと同じ結果の公開鍵をコピーしました。

4

3 に答える 3

3

sudo 経由で git を実行するように PHP を変更します。

<?php `sudo git pull git@github.com:my-user/myrepo.git`; ?>

次に、suders を変更して、Apache ユーザーが git を実行できるようにします。

apache ALL = NOPASSWD: /usr/bin/git
于 2012-10-26T07:50:49.887 に答える
1

すでに Git ラッパーとライブラリがあります。たぶん、それらのいずれかを試すことができます: https://github.com/kbjr/Git.phpおよび/またはhttp://www.gitphp.org/projects/gitphp/wiki

于 2012-10-25T20:44:31.710 に答える
0

私は開発サイトでこれを行いました-スクリプトがパラメーターを取らない場合、特に危険なことは考えられませんが、prdサイトではこれをお勧めしません..

git pull を行う php スクリプトを作成しました。Web ブラウザーでそのスクリプトに移動すると、デザイナーなどによってプッシュされた変更が自動的に展開されます。 http://.../gitpullscript/gitpullscript.php

これは、apache ユーザーが所有する git チェックアウトを作成することで機能します。これを行うには、Apache ユーザー (この場合は www-data) に属するドキュメント ルート以外の場所にディレクトリを作成します。次に、そのディレクトリに git clone を実行すると、すべてのファイルが www-data に属します。その後、必要なディレクトリをドキュメントルートにソフトリンクして、Webブラウザからアクセスできるようにします。

www-data は git グループに属しておらず、レポジトリは誰もが読み取れるように設定されています (ただし、書き込みはできません)。したがって、www-data はプルできますが、プッシュはできません。

プロジェクト階層で、gitpull スクリプトを保持するディレクトリを作成しました。.htaccess を使用して、このディレクトリをパスワードで保護します。 <?php exec('cd /var/www-data/projects/myrepo; git pull');

mkdir /var/www-data sudo chown www-data-www-data su www-data mkdir /var/www-data/projects cd /var/www-data/projects git clone my-repo

于 2015-01-08T23:22:33.573 に答える