带git pull的Shell_exec?

时间:2010-03-26 11:43:06

标签: php git exec

我正在建立一个github帐户,与一些朋友一起开展一个小项目。 我想让我的家用机器能够通过php进行git pull,这样我们就必须调用这个小的php文件让机器更新。

截至目前:

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

这很好用,我得到输出,我在正确的目录中,所以git pull也应该工作,但我得到一个挂页,没有错误,没有。

有什么想法吗?

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

2 个答案:

答案 0 :(得分:3)

我建议您浏览set_time_limit(),并确保如果用户通过ignore_user_abort()断开连接,您的git pull就不会停止。即使从千兆位连接的服务器运行,一些存储库也只需要一段时间来克隆。

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

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

无论哪种方式,超时和用户中止仍然是有效的考虑因素,即使你让它工作。

答案 1 :(得分:1)

所以,回答我自己的问题。

实际上是一个权限问题(谢谢蒂姆),从PHP CLI开始,脚本正在运行。

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

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