带git pull的Shell_exec?

我正在设置一个github帐户,与一些朋友一起开展一个小项目。
我想有 我的家用机器能够通过php进行git pull,这样我们只需要调用这个小的php文件让机器更新。</ p>

目前为止:</ p>

 &lt;?php 
$ output = shell_exec('git help');
echo“&lt; pre&gt; $ output&lt; / pre&gt;”;
?&gt; \ n </ code> </ pre>

这很好用,我得到输出,我在正确的目录中,所以git pull应该也可以正常工作,但是我得到一个挂页,没有错误 什么都没有。</ p>

任何想法?</ p>

编辑:</ strong>一些精确,回购非常小,大约300K, 命令行只需几秒钟。 我也试过shell_exec(“dir”),我在正确的目录中。 我在Windows 7 x64上运行xampp的默认安装,如果我足够精确:)</ p>
</ div>

展开原文

原文

I am setting up a github account, to work on a small project with some friends. I would like to have my home machine able to do a git pull via php, so that we just have to call this small php file for the machine to be up to date.

As of right now :

<?php
$output = shell_exec('git help');
echo "<pre>$output</pre>";
?>

This works perfectly and I get the output, I am in the right directory, so git pull should work just as well, but I get a hanging page, no error, nothing.

Any idea ?

EDIT : A few precisions, the repo is pretty small, around 300K, it takes only a few seconds from the command line. I also tried shell_exec("dir"), and I am in the right directory. I am running the default installation of xampp on Windows 7 x64, if I can be precise enough :)

duanbinren8906
duanbinren8906 尝试从php运行gitpull时的一系列注意事项...jondavidjohn.com/b/7m
大约 8 年之前 回复
dou91855
dou91855 谢谢,我还有一个webproject使用git在另一台计算机上进行开发。合并我的主离线后,我总是不得不通过ssh连接只是为了调用“gitpulloriginmaster”。现在我通过我调用的PHP脚本解决了它。问题当然是php是以apache_mod运行的。以fcgi运行解决了它。:)
8 年多之前 回复
douyu9433
douyu9433 拉远程仓库需要多长时间?我怀疑你刚刚超时。
10 年多之前 回复

2个回答



我建议探索 set_time_limit(),并确保如果用户通过 ignore_user_abort()。 即使从千兆位连接的服务器运行,一些存储库只需要一段时间来克隆。</ p>

另外,检查PHP的工作目录,确保</ strong>运行PHP的用户具有权限 写到回购。 如果您通过CLI运行它并且它“正常工作”,那么当您通过任何正在使用的Web服务器访问时,PHP很有可能在没有适当权限的情况下运行。</ p>

如果您 chmod </ code> destionation目录为 777 </ code>并且它有效,你很有可能需要重新编译apache / php以获得suexec支持。 如果是这样的话,请不要将它保留为777:)</ p>

无论哪种方式,超时和用户中止仍然是有效的考虑因素,即使在它运行之后也是如此。</ p>
</ div>

展开原文

原文

I suggest exploring set_time_limit() , as well as making sure your git pull does not stop if the user disconnects via ignore_user_abort(). Even running from a gigabit connected server, some repositories just take a while to clone.

Also, check PHP's working directory, and ensure the user running PHP has privileges to write to the repo. If you ran this via CLI and it 'just works', its a good chance that PHP was running without appropriate privileges when accessed via whatever web server you are using.

If you chmod the destionation directory as 777 and it works, there's a very good chance that you need to recompile apache/php for suexec support. Please, don't just leave it as 777 if that is the case :)

Either way, time out and user aborts are still valid considerations, even after you get it working.

dougekui1518
dougekui1518 我在Windows下运行,所以没有chmod。 但是特权问题很好,我会查一查。 我会添加时间限制,并在我工作后立即忽略用户中止:)
10 年多之前 回复
dongtuo6562
dongtuo6562 更新了我的回答
10 年多之前 回复
duanshan3065
duanshan3065 问题是,从命令行开始,命令只需要一秒钟,存储库非常小。 即使我让它运行几分钟,也没有。 从项目的根目录调用php脚本时,工作目录是正确的。 (我也试过shell_exec目录,只是为了确定)。
10 年多之前 回复



所以,回答我自己的问题。</ p>

这实际上是一个许可问题(谢谢 蒂姆),从PHP CLI,脚本工作。</ p>

问题是服务php安装使用了一些奇怪的权限。
所以你/我需要开始 PHP服务器通过命令行(或者在这种情况下是Xampp控制面板)。</ strong> </ p>

现在它正在工作,给我“已经是最新的”。 回答我在等待:)</ p>
</ div>

展开原文

原文

So, to answer my own question.

It was in fact a permission problem (thanks tim), from the PHP CLI, the script was working.

The problem was that the service php installation is using some strange permissions. So you/I need to start the PHP server via the command line (or in this case the Xampp control panel).

Now it's working, giving me the "Already up-to-date." answer I was waiting for :)

dongxiezhi9564
dongxiezhi9564 嘿阿诺德,你做了什么来开始这个? 干杯
9 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐