shell_exec
NULL
如果命令失败,将返回。这几乎肯定会发生……问题是为什么。您将无法使用shell_exec
.
我建议改为使用 exec,这样您至少可以弄清楚调用的状态以及出了什么问题。
http://www.php.net/manual/en/function.exec.php
这将允许您设置一些变量,这些变量将填充系统内部操作系统调用的返回值。
$shell_output = array();
$status = NULL;
if($_GET['action']=='add'){
$output = shell_exec('git add *',$shell_output,$status);
print_r($shell_output)
print_r($status);
}
if($_GET['action']=='commit'){
$output = shell_exec('git commit -m "'.$_POST["txt"].'" ',$shell_output,$status);
print_r($shell_output)
print_r($status);
}
我的猜测是您的权限有问题。git 中的 Acommit
需要对该目录的“.git”文件夹的写权限。
另外,请确保您在正确的目录中操作!运行 PHP 实例的 apache 用户可能已经或可能尚未cd
编辑到 repo 所在的正确文件夹。您可能需要在cd path_to_repo && git commit
命令中添加一个以首先移动到正确的目录。我首先使用绝对路径进行调试。
只是一个忠告......如果你试图建立一个基于 PHP 的 git 客户端,你将不得不处理大量的失败案例,其中一个在这段代码中很明显......当没有新文件被修改时提交。如果您需要关注这些情况,我鼓励您查看社区解决方案:
有没有支持 http 的好 php git 客户端?