실행하려면 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를 통해 이 디렉터리에서 작업을 자주 수행합니다. 그러나 웹 브라우저에서 이 스크립트를 호출하면 파일이 업데이트되지 않고 git pull
브라우저에 다음이 출력되는 것을 볼 수 있습니다.
Return Value: 1
이는 Git 1.7.9.5가 설치된 Ubuntu Server 12.04에 있습니다. 원격 저장소는 동일한 서버에 있습니다.
답변1
www-data:www-data
아래에서 스크립트를 실행하고 싶습니다. git pull
복제된 저장소에 대한 쓰기 권한이 있는 사용자로 실행 해야 합니다 . 구성했지만 sudo
별 의미가 없는 곳에서는 호출하지 않습니다(전혀 필요하지 않음). 실행 중인 사용자를 확인한 후 필요한 경우 적절한 사용자로 전환하고 이에 따라 복제된 저장소에 대한 권한을 조정하십시오.