実行するにはPHPスクリプトが必要ですgit pull
が、それを付与するほど素朴ではありません。次の権限でスクリプトをgit
ラップしましたが、スクリプト自体に権限を付与する方法がわかりません。git pull
www-data
git
$ sudo tail -n1 /etc/sudoers
www-data ALL=(ALL) NOPASSWD: /home/php-scripts/git-pull
$ cat /home/php-scripts/git-pull
#!/bin/bash
/usr/bin/git pull
$ ls -la /home | grep php-scripts
drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 3 09:26 php-scripts
$ ls -la /home/php-scripts/git-pull
-rwxrwxr-x 1 ubuntu ubuntu 30 Sep 3 08:44 /home/php-scripts/git-pull
$ cat /var/www/public_html/git-wrapper.php
<?php
$output = array();
$value = 0;
exec("/home/php-scripts/git-pull", $output, $value);
echo "<pre>";
echo "Return Value: {$value}\n";
foreach ( $output as $o) {
echo $o."\n";
}
?>
これは/var/www/public_html/
実際にgitリポジトリであることに注意してください。私はgit pull
CLIを介してこのディレクトリで作業を頻繁に行います。ただし、Webブラウザでこのスクリプトを呼び出すと、ファイルが更新されず、git pull
ブラウザに次のものが出力されることがわかります。
Return Value: 1
これは、Git 1.7.9.5がインストールされているUbuntu Server 12.04にあります。リモートストレージは同じサーバーにあります。
答え1
www-data:www-data
以下からスクリプトを実行したいと思います。git pull
複製されたストレージへの書き込み権限を持つユーザーとして実行する必要があります。設定したがsudo
あまり意味がないところでは呼び出されません(まったく必要ありません)。実行中のユーザーを確認したら、必要に応じて適切なユーザーに切り替えて、それに応じてレプリケートされたストレージの権限を調整します。