用于git的shell_exec配置Godaddy vs Bluehost

时间:2015-10-14 04:24:12

标签: git shared-hosting bluehost

我有一个来自Github的git pull web hook,两个遥控器,GoDaddy [生产]和Bluehost [staging]。这个问题不是关于那些公司本身,而是可能是设置差异的原因。我有这个脚本,我在github.com上设置了一个post commit hook:

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

当我提交Github回购时,钩子会在Bluehost上启动并正常工作。它对Godaddy没有任何作用。

Bluehost浏览器响应:

"already up to date". Pull command works, and the Bluehost repo is updated.

Godaddy浏览器响应:

<pre></pre> Pull command has not worked. Repo not updated.

当我通过浏览器运行此脚本时:

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

我在两台服务器上都获得了正确的'ls'目录输出。

当我通过SSH进入目录时,我可以手动发出命令'git pull origin master',它可以在两台服务器上运行。那么这只是意味着Godaddy允许PHP发出一些命令,而不是其他命令吗?我能以某种方式修复此问题吗?没有人会自动部署到Godaddy中,这是不正确的!

2 个答案:

答案 0 :(得分:8)

这可能类似于previous case,其中:

  

Godaddy技术支持证实 php无法在共享托管环境中访问git命令
  他们说实现这一目标需要VPS。

This comment确认共享服务器上的php设置(您可以配置)非常有限。

如果您的设置属于这种情况,请查看Godaddy支持。

答案 1 :(得分:1)

我遇到了类似的问题:我正在运行的命令:

$output = shell_exec('git pull origin master');

会返回一个空白字符串,但其他 git 命令则不会。通过在shell命令的末尾添加2&gt;&amp; 1来解决这个问题:

$output = shell_exec('git pull origin master 2>&1');

这会将STDERR输出重定向到STDOUT,我发现git抛出了一个我看不到的错误。

http://us3.php.net/manual/en/function.shell-exec.php#106250

http://www.tldp.org/LDP/abs/html/io-redirection.html