我已经使用git和我的服务器(godaddy共享主机)设置了关于SSH密钥的所有设置,并且可以通过SSH使用git pull git@github.com:username/reponame.git
当我提交对git repo的更改时,我正在尝试使用simple-php-git-deploy自动更新测试服务器
当下面的php脚本摘录运行shell_exec('which git')
时,该函数返回一个空字符串。
由于我可以在SSH中运行git命令,我觉得这必须是权限问题。
我尝试运行chmod 755 foldertoupdate
而没有任何变化。
我需要做什么才能让php(或当前的apache用户)调用git命令?
// Check if the required programs are available
$requiredBinaries = array('git', 'rsync');
//.....
foreach ($requiredBinaries as $command) {
$path = trim(shell_exec('which '.$command));
if ($path == '') {
die(sprintf('<div class="error"><b>%s</b> not available. It needs to be installed on the server for this script to work.</div><br> Output was: %s', $command,$path )); // this check fails on the first element, "git" claiming git is not installed
} else {
$version = explode("\n", shell_exec($command.' --version'));
printf('<b>%s</b> : %s'."\n"
, $path
, $version[0]
);
}
}
~/html/TeamBoard
~/html/TeamBoard/deploy.php
答案 0 :(得分:1)
Godaddy技术支持部门确认php
无法在共享托管环境中访问git
个命令。他们说实现这一目标需要VPS。
答案 1 :(得分:1)
正如我所看到的,它不是关于从代码执行git,而是关于执行shell程序(在这种情况下是which
)。目前尚不清楚您是通过浏览器还是直接在shell中执行deploy.php脚本。
尝试使用exec('command -v git', $output, $retval);
在PHP交互模式(git
)中检查php -a
命令可用性,看看这是否适用。