我正在使用Windows
/ PHP
。
通过使用PHP
脚本,我想创建commit
,但此操作失败。
为此,我使用以下代码:
<?
$command = "git commit -am .";
shell_exec($command);
?>
我还尝试使用chdir
确保我在Git存储库目录中但它不起作用(无论如何我认为我不需要chdir
。问题是另一回事。)
通常来自Windows console
我使用上面相同的命令(效果很好):
> git commit -am .
另外,如果从Windows控制台执行:
> php myscript.php
它运作正常。但如果通过浏览器,我会转到网址:
http://localhost/mysite/myscript.php
然后,提交没有通过。但正如我之前所说的那样,可以从浏览器中正确读取状态。
另一方面,如果我只是通过这样做来检查status
:
<?
$command = "git status";
$output = shell_exec($command);
echo $output
?>
然后正确返回Git status
。
如何让commit
通过PHP
上的Windows
工作?
[编辑1]
我检查了Apache错误日志,我看到每次我尝试提交时都会出现错误,说我需要指定电子邮件和名称。然后我做了(通过PHP也)。但现在我又得到了另一个错误,其中包含:致命:使用-a的路径没有意义。 (在Apache错误日志上)当我尝试通过PHP进行以下提交时:shell_exec(&#34; git commit -am&#39;我在此提交消息&#39;&#34;);.你知道现在该做什么吗?
答案 0 :(得分:0)
使用git add .
添加文件,并将消息作为字符串参数提供给-m
:
提交时间:-am
$command = 'git commit -am "php wuz here"';
$escaped_command = escapeshellcmd($command);
shell_exec($escaped_command);
编辑1
git commit -am .
也适用于我,也许您只需要escapeshellcmd
和单引号。我在测试它时遇到外部双引号的问题。
编辑2
Windows 7
编辑3
解决方案(由线程的作者验证。它有效!):
$command = 'git config user.name "Will Smith"';
$escaped_command = escapeshellcmd($command);
$result = shell_exec($escaped_command);
$command = 'git config user.email "myemail@gmail.com"';
$escaped_command = escapeshellcmd($command);
$result = shell_exec($escaped_command);
$command = 'git commit -am "my commit message here"';
$escaped_command = escapeshellcmd($command);
$result = shell_exec($escaped_command);
重要提示:请注意:
escapeshellcmd
Apache log
非常重要,可以了解幕后发生的事情(和调试)