通过脚本运行时出现 Git 全局配置问题

Git global config issue when run through script

提问人:Tim 提问时间:3/11/2016 更新时间:3/11/2016 访问量:2803

问:

我有一个带有 Web 界面的 PHP 脚本,用于为现在自动化的流程提供输入。我试图通过 PHP 的 exec 执行 git 命令,将提交和推送到 Git 到此过程。我能够拉入远程存储库,添加文件并获取其状态。但是,我在尝试提交更改时遇到了问题。

当我尝试提交时,我得到:

[0] => 
[1] => *** Please tell me who you are.
[2] => 
[3] => Run
[4] => 
[5] =>   git config --global user.email "[email protected]"
[6] =>   git config --global user.name "Your Name"
[7] => 
[8] => to set your account's default identity.
[9] => Omit --global to set the identity only in this repository.
[10] => 
[11] => fatal: unable to auto-detect email address (got 'tim@tim.(none)')

据我了解,Git 没有在 ~/.gitconfig 上解析我的全局配置,当通过终端正常执行时,它可以做到这一点。我的用户和组下运行了 Apache。当我尝试运行上面建议的命令时,我得到:

[0] => fatal: $HOME not set

我该如何解决这个问题?

Linux Git 终端 自动化

评论


答:

3赞 Harry 3/11/2016 #1

您需要检查 Apache 中可用的环境变量。您可以使用

http://php.net/manual/en/function.get-defined-vars.php

Apache 以 root 身份启动并切换到非特权用户,但未为该用户设置 env 变量 请参阅此处。

https://serverfault.com/questions/179833/apache2-user-home-directory-lock-to-root

请注意,linux 系统上的主目录设置在 /etc/passwd 中。下面是一个示例

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

但是在Apache中,这只是设置文档根目录,因为它没有像普通登录(即读取配置文件等)那样设置环境变量。您可以在 Apache 中使用

设置环境 HOME /home/foo

评论

2赞 Tim 3/11/2016
谢谢。我将采用这种方法。我还发现以下工作: HOME=<myhomedir> git commit -m “我的消息”