执行混帐从当前目录中的PHP文件提交(Execute git commit from php fil

2019-10-17 01:29发布

我试图执行这个代码,但它不会做任何事情。 但在投入了shell_exec“混帐秀--summary”,当它返回混帐statuss。

if($_GET['action']=='add'){
    $output = shell_exec('git add *');
    echo "Add:<pre>$output</pre>";
}
if($_GET['action']=='commit'){
    $output = shell_exec('git commit -m "'.$_POST["txt"].'" ');
    echo "Commit:<pre>$output</pre>";

}

它是更多钞票从PHP犯git的,怎么样?

Answer 1:

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);
}

我的猜测是你有权限的问题。 一个commit在git的要求写入权限对该目录的“git的”文件夹。

此外,请确保您在正确的目录操作! 在运行PHP实例Apache用户可能会或可能不会已经cd版,以正确的文件夹,其中回购协议。 您可能需要添加一个cd path_to_repo && git commit先移动到您的命令,以正确的目录。 我倒是第一次调试此使用绝对路径。

建议只是一个字,以及...如果你想建立一个基于PHP的git客户端,你将不得不处理一吨失败的情况下,其中的一个在这个代码是显而易见的......在尝试当没有新的文件已被修改提交。 我会鼓励你看看社区的解决方案,如果你需要关注这些情况:

是否与HTTP支持一个良好的PHP的git客户端?



Answer 2:

我建议你在你的git的承诺添加姓名和电子邮件:

$output = shell_exec('git -c user.name="www-data" -c user.email="no-replay@example.org" commit -m "'.$_POST["txt"].'" ', $shell_output, $status);

这些错误可以在服务器错误文件,例:/var/log/apache2/error.log找到

cat /var/log/apache2/error.log


文章来源: Execute git commit from php file in current directory