我正在尝试Perfect Workflow, with Git, GitHub, and SSH,除了从php运行命令git pull
之外,我已经完成了所有设置。
当我运行exec('git pull')
时,我得到:
无法创建目录'/.ssh'。主机密钥验证失败。 致命:远程端意外挂断
如果我在终端中运行它(以root身份)它可以正常工作,但我需要这个钩子才能使用Post-Receive URL(Github)。
如果我exec('whoami')
我得到apache
。
这是来自medocmple与CentOS的(dv)。
答案 0 :(得分:8)
如果你希望 apache (用户)能够从git中提取,你必须为apache创建一个ssh密钥,然后将其添加到github上的只读密钥。 / p>
流程是这样的(根据您的需要调整)
usermod -s /bin/bash apache
su apache
cd ~
ssh-keygen # work through the keygen dance (added a dash)
上传(在这里指代apache的homedir)~/.ssh/id_rsa.pub
到github,并让apache访问它需要从哪个repos中提取。
然后你可以再次通过 su 来测试服务器上的apache并运行 git pull
su apache
cd ~/working-copy
git clone my-project
一旦有效,您应该可以通过PHP运行 git pull 。