Php – Allow Apache to execute git pull

gitPHPshellwebhooks

Haven't been able to figure this out yet.. I've seen a few answers around but none of them help.

I'm trying to use Github Webhooks to have github hit a url on my server and have the server pull down newly committed items as soon as that hits. I have a php script with the following:

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

However that script when hit is run as user apache so I tried:

chown -R apache:apache .

and it still has a permission denied error.

So then I tried editing the sudoers file and changing the following:

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

and that still doesn't work.

How can this be accomplished? If I run:

 sudo php git-hook.php

it works just fine so nothing is wrong with the code in the php file. I just want that to be automated.

Any ideas?

Edit:

I also forgot to mention. I even created a folder /home/apache/.ssh and copied the public key for the git pull over and same result.

Best Answer

Change your PHP to run git via sudo

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

Then change your suoders to allow git to be run by the apache user

apache ALL = NOPASSWD: /usr/bin/git