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

3
我有一个带有web界面的PHP脚本,用于提供输入并自动化处理。我尝试通过在PHP中执行git命令来包括提交和推送到Git的过程。我能够拉取远程存储库、添加文件并获取其状态。但是,当我尝试提交更改时遇到了问题。
当我尝试提交时,会出现以下错误:
[0] => 
[1] => *** Please tell me who you are.
[2] => 
[3] => Run
[4] => 
[5] =>   git config --global user.email "you@example.com"
[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

我该如何解决这个问题?
1个回答

3
您需要检查Apache中可用的环境变量。您可以使用以下方法进行检查:

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

Apache最初以root身份启动,然后切换到非特权用户,但该用户的环境变量未设置。请参见此处。

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 中设置环境变量:
SetEnv HOME /home/foo

2
谢谢。我会采用这种方法。我还发现以下命令也可以使用:HOME=<myhomedir> git commit -m "My Message" - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接