我首先对我的Bitbucket服务器实例运行测试,以获取任何在屏幕上输出的错误消息:
echo shell_exec("cd /website/root/htdocs && git status 2>&1");
这导致出现错误,无法找到git命令,因此必须提供git二进制文件的完整路径:
'which git'
返回结果(以下简称YOU_FULL_GIT_BINARY_PATH_HERE):
/usr/local/git/bin/git
完整路径,例如'/usr/local/git/bin/git status',可以很好地运行git命令。
这并不能解决在.git/config git用户设置中需要密码才能使用'git pull'命令的问题。在git存储库中运行以下命令:
git config credential.helper store
[command][1] 会提示您输入密码并让您在本地不加密存储它(仅由文件系统保护,例如在 /root/.git-credentials 中)。这将允许运行 'git pull' 而无需提示密码。另一种选择(可能更好)是为您的 Web 服务器生成 ssh 密钥,例如 apached,然后将它们添加到您的 Bitbucket 用户专用帐户或存储库密钥中。
我的所有文件夹都被设置为 apache 用户拥有 (Centos 6.8 其他版本可能是 www-data:www-data 等):
chown -R apache:apache YOUR_WEB_FODLER
我不需要使用肮脏的技巧 'chmod o+rw -R' 来让一切正常工作。
exec
应该可以正常工作。尝试使用system()
并查看返回值。 - Prisoner