【发布时间】:2014-09-23 21:34:30
【问题描述】:
我正在尝试在bitbucket上做一个钩子,它执行一个php文件,这个文件执行pull命令:
shell_exec('/usr/local/cpanel/3rdparty/bin/git pull');
pull 命令在 SSH 控制台上运行正常,但 PHP 返回错误:
权限被拒绝(公钥)。致命:无法从远程读取 存储库。
请确保您拥有正确的访问权限和存储库 存在。
命令 --version 显示 git 的路径是正确的,whoiami 返回同一用户两者都有,所以我不知道这是否是权限问题。
可能出了什么问题?
编辑: 另一个问题:我为 git 添加的别名在 PHP 上不起作用,只有上面的完整路径。通过终端它工作得很好。可能这也是 php 中 key 不起作用的原因。
编辑 2: $PATH 在两者上都不同。
【问题讨论】:
-
听起来您的 SSH 密钥未添加到该 git 存储库(权限问题)。
-
如何调用这个包含 shell_exec() 的脚本?通过浏览器/http?在这种情况下,它不应该返回网络服务器的 UID,而不是你得到的“同一用户”吗?
-
公钥在存储库中。我可以从服务器中提取,问题仅在于从 php 文件运行命令时。是的,我正在通过 http 运行 php 文件,并且 whoami 返回相同的用户名。是否可以同时拥有同名但不同权限的两个用户?
-
@BrunoMuller 再次阅读 Marc B 所说的话并阅读我的回答。运行命令的 Apache 用户与运行命令的终端用户之间存在很大差异。