Git 通过 PHP 拉取 shell_exec( ) 从 SSH shell 但不是从网络浏览器

Git pull via PHP shell_exec( ) works from SSH shell but not from web-browser

我有一个 PHP 脚本,它很简单:

$output = shell_exec('git pull https://****@bitbucket.org/****/****.git 2>&1');
print_r($output)

我可以通过 SSH 连接到我的主机,然后 运行 使用“PHP scriptname.php”,它工作正常,并告诉我一切都在几分之一秒内是最新的。

但是,当我尝试通过网络浏览器 运行 相同的 PHP 脚本时,它会无限期地挂起。

问题是您的网络服务器和 ssh shell 有不同的环境变量集。在这种情况下,问题是网络服务器的 $PATH 变量中缺少 git

要修复它,您可以将带有 git 二进制文件的目录添加到 $PATH 变量

set PATH=$PATH:/usr/local/cpanel/3rdparty/lib/path-bin

或者直接用完整路径调用 /usr/local/cpanel/3rdparty/lib/path-bin/git

至于 git 凭据 - 尝试找到负责任的环境变量。