2012-02-21 12 views
10

私はPerfect Workflow, with Git, GitHub, and SSHを試していましたが、PHPからコマンドgit pullを実行する以外はすべて設定しています。PHPスクリプトからgit pullを実行しています

私はexec('git pull')を実行すると、私が手:

は、ディレクトリ '/.ssh' を作成できませんでした。ホストキーの確認に失敗しました。 致命的:リモートエンドは、私は(rootとして)ターミナルでそれを実行した場合、それはうまく動作しますが、私はこのフックはポスト受信URL(GitHubの)から作業する必要が予期せず

を切りました。

私がexec('whoami')の場合はapacheとなります。

CentOSを搭載したメディアムームから(dv)です。

+2

gitリポジトリのユーザをWebアプリケーションが実行されているユーザと同じにする必要があります。 –

+2

そして、 'apache'ユーザのホームディレクトリはどのように設定されていますか? 'ssh'はマシンのルートディレクトリをホームディレクトリとして取得しており、' apache'ユーザとしてそこに書き込むことはできません。 ( 'root'は明らかにできるのですが、なぜ動作するのでしょうか) –

+1

返事をお寄せいただきありがとうございます。 ベン:どうすればいいですか? ブライアン:私は知らない。私はsys/adminの男ではありません。 CentOS – AFRC

答えて

8

apache(ユーザー)がgitから引き出すことができるようにするには、apache用のsshキーを作成してからgithubの読み取り専用キーに追加する必要があります。

流れはGitHubにし、それからプルする必要がreposの方にApacheのアクセスを与えるために、このような何か(あなたのニーズに微調整)

usermod -s /bin/bash apache 
su apache 
cd ~ 
ssh-keygen # work through the keygen dance (added a dash) 

アップロード(チルダここではApacheのホームディレクトリを参照)~/.ssh/id_rsa.pubです。

その後、あなたは再びにより、サーバー上でテストすることができそれはあなたがPHPを通じてを引っ張るにgitを実行することができるはずです働いてたらにgitをApacheやランニングにsu」ingが

su apache 
cd ~/working-copy 
git clone my-project 

を引きます。

+0

こんにちは。ありがとう。 'chmod apache -s/bin/bash'コマンドを実行すると、_chmod:' apache 'にアクセスできません:そのようなファイルやディレクトリはありません。申し訳ありませんが、私は本当にこのサーバーの管理者/ UNIXのことを初めて知っています。 – AFRC

+1

おっと、 'chmod -s/bin/bash apache'でなければなりません。これは、apacheのユーザのシェルをbashに設定しているので、PHPで実行する前に、Apacheのsuとsuのgit操作を行うことができます。私は私の答えでそれを変更します。 – quickshiftin

+0

まだ取得chmod: 'apache 'にアクセスできません:そのようなファイルやディレクトリはありません – AFRC

関連する問題