我正在建立一个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的默认安装,如果我足够精确:)
答案 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控制面板)。
现在它正在工作,给我“已经是最新的”。回答我在等待:)